Skip to content

Commit 4ae4dbc

Browse files
committed
Various CMake tweaks to build with WSL on Windows
1 parent 88c3640 commit 4ae4dbc

File tree

5 files changed

+41
-24
lines changed

5 files changed

+41
-24
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: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,13 @@ 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/)
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)
6063

61-
add_library(separateschema OBJECT ${SEPARATE_SCHEMA_CPP})
62-
target_link_libraries(separateschema PUBLIC graphqlservice)
64+
add_library(separateschema OBJECT ${SEPARATE_SCHEMA_PATHS})
6365
target_include_directories(separateschema PUBLIC
6466
${CMAKE_CURRENT_BINARY_DIR}/../include
6567
${CMAKE_CURRENT_SOURCE_DIR}/../include
@@ -71,9 +73,13 @@ if(GRAPHQL_UPDATE_SAMPLES)
7173
add_dependencies(separateschema update_samples)
7274
endif()
7375

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

7884
add_executable(sample today/sample.cpp)
7985
target_link_libraries(sample PRIVATE
@@ -87,7 +93,6 @@ target_include_directories(sample PRIVATE
8793
if(GRAPHQL_BUILD_TESTS)
8894
# tests
8995
add_library(unifiedschema OBJECT unified/TodaySchema.cpp)
90-
target_link_libraries(unifiedschema PUBLIC graphqlservice)
9196
target_include_directories(unifiedschema PUBLIC
9297
${CMAKE_CURRENT_BINARY_DIR}/../include
9398
${CMAKE_CURRENT_SOURCE_DIR}/../include
@@ -100,7 +105,11 @@ if(GRAPHQL_BUILD_TESTS)
100105
add_dependencies(unifiedschema update_samples)
101106
endif()
102107

103-
add_library(unifiedgraphql today/UnifiedToday.cpp)
104-
target_link_libraries(unifiedgraphql PUBLIC unifiedschema)
105-
target_include_directories(unifiedgraphql PUBLIC today)
108+
add_library(unifiedgraphql
109+
today/UnifiedToday.cpp
110+
$<TARGET_OBJECTS:unifiedschema>)
111+
target_link_libraries(unifiedgraphql PUBLIC graphqlservice)
112+
target_include_directories(unifiedgraphql PUBLIC
113+
$<TARGET_PROPERTY:unifiedschema,INCLUDE_DIRECTORIES>
114+
today)
106115
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)