6
6
# GODOT_CPP_SYSTEM_HEADERS Mark the header files as SYSTEM. This may be useful to supress warnings in projects including this one.
7
7
# GODOT_CPP_WARNING_AS_ERROR Treat any warnings as errors
8
8
# GODOT_CUSTOM_API_FILE: Path to a custom GDExtension API JSON file (takes precedence over `gdextension_dir`)
9
+ # GODOT_CPP_INSTALL: Enables target install for exporting godot-cpp cmake configuration
9
10
# FLOAT_PRECISION: Floating-point precision level ("single", "double")
10
11
#
11
12
# Android cmake arguments
@@ -43,6 +44,8 @@ project(godot-cpp LANGUAGES CXX)
43
44
option (GENERATE_TEMPLATE_GET_NODE "Generate a template version of the Node class's get_node." ON )
44
45
option (GODOT_CPP_SYSTEM_HEADERS "Expose headers as SYSTEM." ON )
45
46
option (GODOT_CPP_WARNING_AS_ERROR "Treat warnings as errors" OFF )
47
+ option (GODOT_CPP_INSTALL "Enables target install for exporting godot-cpp cmake configuration" ON )
48
+
46
49
47
50
# Add path to modules
48
51
list ( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake/" )
@@ -70,7 +73,7 @@ if(NOT DEFINED BITS)
70
73
endif ()
71
74
72
75
# Input from user for GDExtension interface header and the API JSON file
73
- set (GODOT_GDEXTENSION_DIR "gdextension" CACHE STRING "" )
76
+ set (GODOT_GDEXTENSION_DIR "${CMAKE_CURRENT_SOURCE_DIR} / gdextension" CACHE STRING "" )
74
77
set (GODOT_CUSTOM_API_FILE "" CACHE STRING "" )
75
78
76
79
set (GODOT_GDEXTENSION_API_FILE "${GODOT_GDEXTENSION_DIR} /extension_api.json" )
@@ -195,9 +198,10 @@ if (GODOT_CPP_SYSTEM_HEADERS)
195
198
endif ()
196
199
197
200
target_include_directories (${PROJECT_NAME} ${GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE} PUBLIC
198
- include
199
- ${CMAKE_CURRENT_BINARY_DIR} /gen/include
200
- ${GODOT_GDEXTENSION_DIR}
201
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
202
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} /gen/include >
203
+ $<BUILD_INTERFACE:${GODOT_GDEXTENSION_DIR} >
204
+ $<INSTALL_INTERFACE:include >
201
205
)
202
206
203
207
# Add the compile flags
@@ -226,3 +230,43 @@ set_target_properties(${PROJECT_NAME}
226
230
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /bin"
227
231
OUTPUT_NAME "${OUTPUT_NAME} "
228
232
)
233
+
234
+ if ($CACHE{GODOT_CPP_INSTALL} )
235
+ install (TARGETS ${PROJECT_NAME}
236
+ EXPORT GodotCppTargets
237
+ )
238
+
239
+ install (EXPORT GodotCppTargets
240
+ FILE GodotCppTargets.cmake
241
+ NAMESPACE godot::
242
+ DESTINATION lib/cmake/GodotCpp
243
+ )
244
+
245
+ install (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /include /
246
+ DESTINATION include
247
+ )
248
+
249
+ install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /gen/include /
250
+ DESTINATION include
251
+ )
252
+
253
+ if (GODOT_GDEXTENSION_DIR AND EXISTS ${GODOT_GDEXTENSION_DIR} )
254
+ install (DIRECTORY ${GODOT_GDEXTENSION_DIR} /
255
+ DESTINATION include
256
+ )
257
+ endif ()
258
+
259
+ include (CMakePackageConfigHelpers)
260
+
261
+ configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR} /cmake/GodotCppConfig.cmake.in
262
+ "${CMAKE_CURRENT_BINARY_DIR} /GodotCppConfig.cmake"
263
+ INSTALL_DESTINATION "lib/cmake/GodotCpp"
264
+ NO_SET_AND_CHECK_MACRO
265
+ NO_CHECK_REQUIRED_COMPONENTS_MACRO
266
+ )
267
+
268
+ install (FILES
269
+ ${CMAKE_CURRENT_BINARY_DIR} /GodotCppConfig.cmake
270
+ DESTINATION lib/cmake/GodotCpp
271
+ )
272
+ endif ()
0 commit comments