Skip to content

Commit 594cc96

Browse files
authored
Merge pull request #84 from wravery/master
CMake tweaks to be compatible with earlier versions
2 parents 95a75aa + 32f02f8 commit 594cc96

File tree

6 files changed

+48
-27
lines changed

6 files changed

+48
-27
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,6 @@ settings.json
3333
/test/pegtl_tests
3434
/test/response_tests
3535
/test/today_tests
36-
build
36+
build/
37+
install/
38+
isenseconfig/

CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@ if(NOT pegtl_FOUND)
3636
add_subdirectory(PEGTL)
3737
endif()
3838

39-
add_subdirectory(src)
40-
4139
option(GRAPHQL_UPDATE_SAMPLES "Regenerate the sample schema sources whether or not we're building the tests." ON)
4240

41+
add_subdirectory(cmake)
42+
add_subdirectory(src)
43+
4344
if(GRAPHQL_BUILD_TESTS OR GRAPHQL_UPDATE_SAMPLES)
4445
add_subdirectory(samples)
4546

cmake/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Copyright (c) Microsoft Corporation. All rights reserved.
2+
# Licensed under the MIT License.
3+
4+
cmake_minimum_required(VERSION 3.8.2)
5+
6+
# Enable version checks in find_package
7+
include(CMakePackageConfigHelpers)
8+
write_basic_package_version_file(${PROJECT_NAME}-config-version.cmake COMPATIBILITY SameMajorVersion)
9+
10+
install(FILES
11+
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}-config.cmake
12+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
13+
DESTINATION ${GRAPHQL_INSTALL_CMAKE_DIR}/${PROJECT_NAME})

samples/CMakeLists.txt

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,14 @@ if(GRAPHQL_UPDATE_SAMPLES)
5555
endif()
5656

5757
# sample
58-
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/separate/today_schema_files SEPARATE_SCHEMA_CPP)
59-
list(TRANSFORM SEPARATE_SCHEMA_CPP PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/separate/)
60-
61-
add_library(separateschema OBJECT ${SEPARATE_SCHEMA_CPP})
62-
target_link_libraries(separateschema PUBLIC graphqlservice)
58+
set(SEPARATE_SCHEMA_PATHS "")
59+
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/separate/today_schema_files SEPARATE_SCHEMA_FILES)
60+
foreach(CPP_FILE IN LISTS SEPARATE_SCHEMA_FILES)
61+
list(APPEND SEPARATE_SCHEMA_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/separate/${CPP_FILE}")
62+
endforeach(CPP_FILE)
63+
64+
add_library(separateschema OBJECT ${SEPARATE_SCHEMA_PATHS})
65+
add_dependencies(separateschema graphqlservice)
6366
target_include_directories(separateschema PUBLIC
6467
${CMAKE_CURRENT_BINARY_DIR}/../include
6568
${CMAKE_CURRENT_SOURCE_DIR}/../include
@@ -71,9 +74,14 @@ if(GRAPHQL_UPDATE_SAMPLES)
7174
add_dependencies(separateschema update_samples)
7275
endif()
7376

74-
add_library(separategraphql today/SeparateToday.cpp)
75-
target_link_libraries(separategraphql PUBLIC separateschema)
76-
target_include_directories(separategraphql PUBLIC today)
77+
add_library(separategraphql
78+
today/SeparateToday.cpp
79+
$<TARGET_OBJECTS:separateschema>)
80+
add_dependencies(separategraphql separateschema)
81+
target_link_libraries(separategraphql PUBLIC graphqlservice)
82+
target_include_directories(separategraphql PUBLIC
83+
$<TARGET_PROPERTY:separateschema,INCLUDE_DIRECTORIES>
84+
today)
7785

7886
add_executable(sample today/sample.cpp)
7987
target_link_libraries(sample PRIVATE
@@ -87,20 +95,25 @@ target_include_directories(sample PRIVATE
8795
if(GRAPHQL_BUILD_TESTS)
8896
# tests
8997
add_library(unifiedschema OBJECT unified/TodaySchema.cpp)
90-
target_link_libraries(unifiedschema PUBLIC graphqlservice)
98+
add_dependencies(unifiedschema graphqlservice)
9199
target_include_directories(unifiedschema PUBLIC
92100
${CMAKE_CURRENT_BINARY_DIR}/../include
93101
${CMAKE_CURRENT_SOURCE_DIR}/../include
94102
${CMAKE_CURRENT_SOURCE_DIR}/../PEGTL/include
95103
unified)
96-
add_bigobj_flag(unifiedschema)
97104

98105
if(GRAPHQL_UPDATE_SAMPLES)
99106
# wait for the sample update to complete
100107
add_dependencies(unifiedschema update_samples)
101108
endif()
102109

103-
add_library(unifiedgraphql today/UnifiedToday.cpp)
104-
target_link_libraries(unifiedgraphql PUBLIC unifiedschema)
105-
target_include_directories(unifiedgraphql PUBLIC today)
110+
add_library(unifiedgraphql
111+
today/UnifiedToday.cpp
112+
$<TARGET_OBJECTS:unifiedschema>)
113+
add_dependencies(unifiedgraphql unifiedschema)
114+
target_link_libraries(unifiedgraphql PUBLIC graphqlservice)
115+
target_include_directories(unifiedgraphql PUBLIC
116+
$<TARGET_PROPERTY:unifiedschema,INCLUDE_DIRECTORIES>
117+
today)
118+
add_bigobj_flag(unifiedgraphql)
106119
endif()

src/CMakeLists.txt

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ add_custom_command(
5252
OUTPUT
5353
${CMAKE_CURRENT_BINARY_DIR}/../IntrospectionSchema.cpp
5454
${CMAKE_CURRENT_BINARY_DIR}/../include/graphqlservice/IntrospectionSchema.h
55+
COMMAND ${CMAKE_COMMAND} -E make_directory include/graphqlservice
5556
COMMAND schemagen --introspection
5657
DEPENDS schemagen
5758
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/..
@@ -84,7 +85,7 @@ add_library(graphqlservice
8485
target_link_libraries(graphqlservice PUBLIC
8586
graphqlpeg
8687
Threads::Threads)
87-
target_include_directories(graphqlservice PRIVATE
88+
target_include_directories(graphqlservice SYSTEM PRIVATE
8889
${CMAKE_CURRENT_BINARY_DIR}/../include)
8990

9091
# RapidJSON is the only option for JSON serialization used in this project, but if you want
@@ -140,15 +141,6 @@ install(FILES
140141
DESTINATION ${GRAPHQL_INSTALL_INCLUDE_DIR}/graphqlservice
141142
CONFIGURATIONS Release)
142143

143-
# Enable version checks in find_package
144-
include(CMakePackageConfigHelpers)
145-
write_basic_package_version_file(cmake/${PROJECT_NAME}-config-version.cmake COMPATIBILITY SameMajorVersion)
146-
147-
install(FILES
148-
${CMAKE_CURRENT_SOURCE_DIR}/../cmake/${PROJECT_NAME}-config.cmake
149-
${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}-config-version.cmake
150-
DESTINATION ${GRAPHQL_INSTALL_CMAKE_DIR}/${PROJECT_NAME})
151-
152144
install(EXPORT cppgraphqlgen-targets
153145
NAMESPACE cppgraphqlgen::
154146
DESTINATION ${GRAPHQL_INSTALL_CMAKE_DIR}/${PROJECT_NAME})

0 commit comments

Comments
 (0)