@@ -14,64 +14,75 @@ endfunction()
1414add_library (graphqlpeg GraphQLTree.cpp)
1515target_link_libraries (graphqlpeg PUBLIC taocpp::pegtl)
1616target_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} >)
2020add_bigobj_flag(graphqlpeg)
2121
2222# graphqlresponse
2323add_library (graphqlresponse OBJECT GraphQLResponse.cpp)
2424target_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)
4054endif ()
4155
42- find_package (Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS} )
43- target_link_libraries (schemagen PRIVATE ${BOOST_LIBRARIES} )
44-
4556if (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)
5970else ()
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)
6273endif ()
6374
6475# graphqlservice
6576add_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)
7081target_link_libraries (graphqlservice PUBLIC
7182 graphqlpeg
7283 Threads::Threads)
7384target_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)
106117else ()
@@ -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-
123129install (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)
136142write_basic_package_version_file(cmake/${PROJECT_NAME} -config-version .cmake COMPATIBILITY SameMajorVersion)
137143
138144install (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
0 commit comments