Skip to content

Commit 10dffe4

Browse files
committed
Use relative paths so it works with CMake add_subdirectory
1 parent cdc17d6 commit 10dffe4

File tree

3 files changed

+62
-56
lines changed

3 files changed

+62
-56
lines changed

samples/CMakeLists.txt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ if(GRAPHQL_BUILD_TESTS)
4242
add_library(unifiedschema OBJECT unified/TodaySchema.cpp)
4343
target_link_libraries(unifiedschema PUBLIC graphqlservice)
4444
target_include_directories(unifiedschema PUBLIC
45-
${CMAKE_BINARY_DIR}/include
46-
${CMAKE_SOURCE_DIR}/include
47-
${CMAKE_SOURCE_DIR}/PEGTL/include
45+
${CMAKE_CURRENT_BINARY_DIR}/../include
46+
${CMAKE_CURRENT_SOURCE_DIR}/../include
47+
${CMAKE_CURRENT_SOURCE_DIR}/../PEGTL/include
4848
${CMAKE_CURRENT_BINARY_DIR}/unified)
4949
add_bigobj_flag(unifiedschema)
5050

@@ -56,9 +56,9 @@ endif()
5656
add_library(separateschema OBJECT ${SEPARATE_SCHEMA_CPP})
5757
target_link_libraries(separateschema PUBLIC graphqlservice)
5858
target_include_directories(separateschema PUBLIC
59-
${CMAKE_BINARY_DIR}/include
60-
${CMAKE_SOURCE_DIR}/include
61-
${CMAKE_SOURCE_DIR}/PEGTL/include
59+
${CMAKE_CURRENT_BINARY_DIR}/../include
60+
${CMAKE_CURRENT_SOURCE_DIR}/../include
61+
${CMAKE_CURRENT_SOURCE_DIR}/../PEGTL/include
6262
${CMAKE_CURRENT_BINARY_DIR}/separate)
6363

6464
add_library(separategraphql today/SeparateToday.cpp)
@@ -71,9 +71,9 @@ target_link_libraries(sample PRIVATE
7171
separategraphql
7272
graphqljson)
7373
target_include_directories(sample PRIVATE
74-
${CMAKE_BINARY_DIR}/include
75-
${CMAKE_SOURCE_DIR}/include
76-
${CMAKE_SOURCE_DIR}/PEGTL/include
74+
${CMAKE_CURRENT_BINARY_DIR}/../include
75+
${CMAKE_CURRENT_SOURCE_DIR}/../include
76+
${CMAKE_CURRENT_SOURCE_DIR}/../PEGTL/include
7777
${CMAKE_CURRENT_BINARY_DIR}/separate
7878
${CMAKE_CURRENT_SOURCE_DIR}/today)
7979

src/CMakeLists.txt

Lines changed: 48 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -14,64 +14,75 @@ endfunction()
1414
add_library(graphqlpeg GraphQLTree.cpp)
1515
target_link_libraries(graphqlpeg PUBLIC taocpp::pegtl)
1616
target_include_directories(graphqlpeg PUBLIC
17-
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
18-
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/PEGTL/include>
17+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>
18+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../PEGTL/include>
1919
$<INSTALL_INTERFACE:${GRAPHQL_INSTALL_INCLUDE_DIR}>)
2020
add_bigobj_flag(graphqlpeg)
2121

2222
# graphqlresponse
2323
add_library(graphqlresponse OBJECT GraphQLResponse.cpp)
2424
target_include_directories(graphqlresponse PRIVATE
25-
${CMAKE_SOURCE_DIR}/include)
26-
27-
# schemagen
28-
add_executable(schemagen
29-
$<TARGET_OBJECTS:graphqlresponse>
30-
SchemaGenerator.cpp)
31-
target_link_libraries(schemagen PRIVATE graphqlpeg)
32-
33-
set(BOOST_COMPONENTS program_options)
34-
set(BOOST_LIBRARIES Boost::program_options)
25+
${CMAKE_CURRENT_SOURCE_DIR}/../include)
26+
27+
option(GRAPHQL_BUILD_SCHEMAGEN "Build the schemagen tool." ON)
28+
29+
if(GRAPHQL_BUILD_SCHEMAGEN)
30+
# schemagen
31+
add_executable(schemagen
32+
$<TARGET_OBJECTS:graphqlresponse>
33+
SchemaGenerator.cpp)
34+
target_link_libraries(schemagen PRIVATE graphqlpeg)
35+
36+
set(BOOST_COMPONENTS program_options)
37+
set(BOOST_LIBRARIES Boost::program_options)
38+
39+
if(NOT MSVC)
40+
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} filesystem)
41+
set(BOOST_LIBRARIES ${BOOST_LIBRARIES} Boost::filesystem)
42+
target_compile_options(schemagen PRIVATE -DUSE_BOOST_FILESYSTEM)
43+
endif()
44+
45+
find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS})
46+
target_link_libraries(schemagen PRIVATE ${BOOST_LIBRARIES})
3547

36-
if(NOT MSVC)
37-
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} filesystem)
38-
set(BOOST_LIBRARIES ${BOOST_LIBRARIES} Boost::filesystem)
39-
target_compile_options(schemagen PRIVATE -DUSE_BOOST_FILESYSTEM)
48+
install(TARGETS schemagen
49+
EXPORT cppgraphqlgen-targets
50+
RUNTIME DESTINATION ${GRAPHQL_INSTALL_TOOLS_DIR}/${PROJECT_NAME}
51+
CONFIGURATIONS Release)
52+
else()
53+
set(GRAPHQL_UPDATE_SAMPLES OFF CACHE BOOL "GRAPHQL_UPDATE_SAMPLES depends on GRAPHQL_BUILD_SCHEMAGEN" FORCE)
4054
endif()
4155

42-
find_package(Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS})
43-
target_link_libraries(schemagen PRIVATE ${BOOST_LIBRARIES})
44-
4556
if(GRAPHQL_UPDATE_SAMPLES)
4657
add_custom_command(
4758
OUTPUT
48-
${CMAKE_BINARY_DIR}/IntrospectionSchema.cpp
49-
${CMAKE_BINARY_DIR}/include/graphqlservice/IntrospectionSchema.h
59+
${CMAKE_CURRENT_BINARY_DIR}/../IntrospectionSchema.cpp
60+
${CMAKE_CURRENT_BINARY_DIR}/../include/graphqlservice/IntrospectionSchema.h
5061
COMMAND schemagen --introspection
5162
DEPENDS schemagen
52-
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
63+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/..
5364
COMMENT "Generating IntrospectionSchema files")
5465

5566
install(FILES
56-
${CMAKE_BINARY_DIR}/include/graphqlservice/IntrospectionSchema.h
57-
${CMAKE_BINARY_DIR}/IntrospectionSchema.cpp
67+
${CMAKE_CURRENT_BINARY_DIR}/../include/graphqlservice/IntrospectionSchema.h
68+
${CMAKE_CURRENT_BINARY_DIR}/../IntrospectionSchema.cpp
5869
DESTINATION ${CMAKE_SOURCE_DIR}/samples/introspection)
5970
else()
60-
file(COPY ${CMAKE_SOURCE_DIR}/samples/introspection/IntrospectionSchema.cpp DESTINATION ${CMAKE_BINARY_DIR})
61-
file(COPY ${CMAKE_SOURCE_DIR}/samples/introspection/IntrospectionSchema.h DESTINATION ${CMAKE_BINARY_DIR}/include/graphqlservice)
71+
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/../samples/introspection/IntrospectionSchema.cpp DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/..)
72+
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/../samples/introspection/IntrospectionSchema.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/../include/graphqlservice)
6273
endif()
6374

6475
# graphqlservice
6576
add_library(graphqlservice
6677
$<TARGET_OBJECTS:graphqlresponse>
6778
GraphQLService.cpp
6879
Introspection.cpp
69-
${CMAKE_BINARY_DIR}/IntrospectionSchema.cpp)
80+
${CMAKE_CURRENT_BINARY_DIR}/../IntrospectionSchema.cpp)
7081
target_link_libraries(graphqlservice PUBLIC
7182
graphqlpeg
7283
Threads::Threads)
7384
target_include_directories(graphqlservice PRIVATE
74-
${CMAKE_BINARY_DIR}/include)
85+
${CMAKE_CURRENT_BINARY_DIR}/../include)
7586

7687
# RapidJSON is the only option for JSON serialization used in this project, but if you want
7788
# to use another JSON library you can implement an alternate version of the functions in
@@ -100,7 +111,7 @@ if(BUILD_GRAPHQLJSON)
100111
RUNTIME DESTINATION bin
101112
ARCHIVE DESTINATION lib
102113
LIBRARY DESTINATION lib)
103-
install(FILES ${CMAKE_SOURCE_DIR}/include/graphqlservice/JSONResponse.h
114+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../include/graphqlservice/JSONResponse.h
104115
DESTINATION ${GRAPHQL_INSTALL_INCLUDE_DIR}/graphqlservice
105116
CONFIGURATIONS Release)
106117
else()
@@ -115,19 +126,14 @@ install(TARGETS
115126
ARCHIVE DESTINATION lib
116127
LIBRARY DESTINATION lib)
117128

118-
install(TARGETS schemagen
119-
EXPORT cppgraphqlgen-targets
120-
RUNTIME DESTINATION ${GRAPHQL_INSTALL_TOOLS_DIR}/${PROJECT_NAME}
121-
CONFIGURATIONS Release)
122-
123129
install(FILES
124-
${CMAKE_SOURCE_DIR}/include/graphqlservice/GraphQLParse.h
125-
${CMAKE_SOURCE_DIR}/include/graphqlservice/GraphQLTree.h
126-
${CMAKE_SOURCE_DIR}/include/graphqlservice/GraphQLGrammar.h
127-
${CMAKE_SOURCE_DIR}/include/graphqlservice/GraphQLResponse.h
128-
${CMAKE_SOURCE_DIR}/include/graphqlservice/GraphQLService.h
129-
${CMAKE_SOURCE_DIR}/include/graphqlservice/Introspection.h
130-
${CMAKE_BINARY_DIR}/include/graphqlservice/IntrospectionSchema.h
130+
${CMAKE_CURRENT_SOURCE_DIR}/../include/graphqlservice/GraphQLParse.h
131+
${CMAKE_CURRENT_SOURCE_DIR}/../include/graphqlservice/GraphQLResponse.h
132+
${CMAKE_CURRENT_SOURCE_DIR}/../include/graphqlservice/GraphQLService.h
133+
${CMAKE_CURRENT_SOURCE_DIR}/../include/graphqlservice/GraphQLGrammar.h
134+
${CMAKE_CURRENT_SOURCE_DIR}/../include/graphqlservice/GraphQLTree.h
135+
${CMAKE_CURRENT_SOURCE_DIR}/../include/graphqlservice/Introspection.h
136+
${CMAKE_CURRENT_BINARY_DIR}/../include/graphqlservice/IntrospectionSchema.h
131137
DESTINATION ${GRAPHQL_INSTALL_INCLUDE_DIR}/graphqlservice
132138
CONFIGURATIONS Release)
133139

@@ -136,7 +142,7 @@ include(CMakePackageConfigHelpers)
136142
write_basic_package_version_file(cmake/${PROJECT_NAME}-config-version.cmake COMPATIBILITY SameMajorVersion)
137143

138144
install(FILES
139-
${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake
145+
${CMAKE_CURRENT_SOURCE_DIR}/../cmake/${PROJECT_NAME}-config.cmake
140146
${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}-config-version.cmake
141147
DESTINATION ${GRAPHQL_INSTALL_CMAKE_DIR}/${PROJECT_NAME})
142148

test/CMakeLists.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ target_link_libraries(pegtl_tests PRIVATE
2828
GTest::GTest
2929
GTest::Main)
3030
target_include_directories(pegtl_tests PUBLIC
31-
${CMAKE_BINARY_DIR}/include
32-
${CMAKE_SOURCE_DIR}/include
33-
${CMAKE_SOURCE_DIR}/PEGTL/include)
31+
${CMAKE_CURRENT_BINARY_DIR}/../include
32+
${CMAKE_CURRENT_SOURCE_DIR}/../include
33+
${CMAKE_CURRENT_SOURCE_DIR}/../PEGTL/include)
3434
gtest_add_tests(TARGET pegtl_tests)
3535

3636
add_executable(response_tests ResponseTests.cpp)
@@ -39,6 +39,6 @@ target_link_libraries(response_tests PRIVATE
3939
GTest::GTest
4040
GTest::Main)
4141
target_include_directories(response_tests PUBLIC
42-
${CMAKE_BINARY_DIR}/include
43-
${CMAKE_SOURCE_DIR}/include)
42+
${CMAKE_CURRENT_BINARY_DIR}/../include
43+
${CMAKE_CURRENT_SOURCE_DIR}/../include)
4444
gtest_add_tests(TARGET response_tests)

0 commit comments

Comments
 (0)