@@ -14,64 +14,75 @@ endfunction()
14
14
add_library (graphqlpeg GraphQLTree.cpp )
15
15
target_link_libraries (graphqlpeg PUBLIC taocpp::pegtl )
16
16
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>
19
19
$< INSTALL_INTERFACE:${GRAPHQL_INSTALL_INCLUDE_DIR} > )
20
20
add_bigobj_flag (graphqlpeg )
21
21
22
22
# graphqlresponse
23
23
add_library (graphqlresponse OBJECT GraphQLResponse.cpp )
24
24
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} )
35
47
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 )
40
54
endif ()
41
55
42
- find_package (Boost REQUIRED COMPONENTS ${BOOST_COMPONENTS} )
43
- target_link_libraries (schemagen PRIVATE ${BOOST_LIBRARIES} )
44
-
45
56
if (GRAPHQL_UPDATE_SAMPLES )
46
57
add_custom_command (
47
58
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
50
61
COMMAND schemagen --introspection
51
62
DEPENDS schemagen
52
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
63
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /..
53
64
COMMENT "Generating IntrospectionSchema files" )
54
65
55
66
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
58
69
DESTINATION ${CMAKE_SOURCE_DIR} /samples/introspection )
59
70
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 )
62
73
endif ()
63
74
64
75
# graphqlservice
65
76
add_library (graphqlservice
66
77
$< TARGET_OBJECTS:graphqlresponse>
67
78
GraphQLService.cpp
68
79
Introspection.cpp
69
- ${CMAKE_BINARY_DIR} /IntrospectionSchema.cpp )
80
+ ${CMAKE_CURRENT_BINARY_DIR} /.. /IntrospectionSchema.cpp )
70
81
target_link_libraries (graphqlservice PUBLIC
71
82
graphqlpeg
72
83
Threads::Threads )
73
84
target_include_directories (graphqlservice PRIVATE
74
- ${CMAKE_BINARY_DIR} /include )
85
+ ${CMAKE_CURRENT_BINARY_DIR} /.. /include )
75
86
76
87
# RapidJSON is the only option for JSON serialization used in this project, but if you want
77
88
# to use another JSON library you can implement an alternate version of the functions in
@@ -100,7 +111,7 @@ if(BUILD_GRAPHQLJSON)
100
111
RUNTIME DESTINATION bin
101
112
ARCHIVE DESTINATION lib
102
113
LIBRARY DESTINATION lib )
103
- install (FILES ${CMAKE_SOURCE_DIR} /include/graphqlservice/JSONResponse.h
114
+ install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /.. /include/graphqlservice/JSONResponse.h
104
115
DESTINATION ${GRAPHQL_INSTALL_INCLUDE_DIR} /graphqlservice
105
116
CONFIGURATIONS Release )
106
117
else ()
@@ -115,19 +126,14 @@ install(TARGETS
115
126
ARCHIVE DESTINATION lib
116
127
LIBRARY DESTINATION lib )
117
128
118
- install (TARGETS schemagen
119
- EXPORT cppgraphqlgen-targets
120
- RUNTIME DESTINATION ${GRAPHQL_INSTALL_TOOLS_DIR} /${PROJECT_NAME}
121
- CONFIGURATIONS Release )
122
-
123
129
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
131
137
DESTINATION ${GRAPHQL_INSTALL_INCLUDE_DIR} /graphqlservice
132
138
CONFIGURATIONS Release )
133
139
@@ -136,7 +142,7 @@ include(CMakePackageConfigHelpers)
136
142
write_basic_package_version_file (cmake/${PROJECT_NAME}-config-version.cmake COMPATIBILITY SameMajorVersion )
137
143
138
144
install (FILES
139
- ${CMAKE_SOURCE_DIR} /cmake/${PROJECT_NAME}-config.cmake
145
+ ${CMAKE_CURRENT_SOURCE_DIR} /.. /cmake/${PROJECT_NAME}-config.cmake
140
146
${CMAKE_CURRENT_BINARY_DIR} /cmake/${PROJECT_NAME}-config-version.cmake
141
147
DESTINATION ${GRAPHQL_INSTALL_CMAKE_DIR} /${PROJECT_NAME} )
142
148
0 commit comments