|
37 | 37 | #
|
38 | 38 | # Todo
|
39 | 39 | # Test build for Windows, Mac and mingw.
|
| 40 | +# |
| 41 | +# Installs the library after build: |
| 42 | +# cmake --install path/to/build --prefix path/to/install |
| 43 | +# |
| 44 | +# Then the target then can be imported by another cmake project like this: |
| 45 | +# find_package(godot-cpp CONFIG REQUIRED) |
| 46 | +# |
| 47 | +# add_library(libfoo SHARED) |
| 48 | +# set_target_properties(libfoo PROPERTIES POSITION_INDEPENDENT_CODE ON) |
| 49 | +# target_link_libraries(libfoo PUBLIC godot-cpp::godot-cpp) |
| 50 | +# |
| 51 | +# Users need to provide the directory of the installation: |
| 52 | +# cmake -S . -B path/to/build -DCMAKE_PREFIX_PATH=/absolute/path/to/install |
40 | 53 |
|
41 | 54 | cmake_minimum_required(VERSION 3.13)
|
42 | 55 | project(godot-cpp LANGUAGES CXX)
|
@@ -194,10 +207,11 @@ if (GODOT_CPP_SYSTEM_HEADERS)
|
194 | 207 | set(GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE SYSTEM)
|
195 | 208 | endif ()
|
196 | 209 |
|
197 |
| -target_include_directories(${PROJECT_NAME} ${GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE} PUBLIC |
198 |
| - include |
199 |
| - ${CMAKE_CURRENT_BINARY_DIR}/gen/include |
200 |
| - ${GODOT_GDEXTENSION_DIR} |
| 210 | +target_include_directories(${PROJECT_NAME} ${GODOT_SYSTEM_HEADERS_ATTRIBUTE} PUBLIC |
| 211 | + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> |
| 212 | + $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/gen/include> |
| 213 | + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${GODOT_GDEXTENSION_DIR}> |
| 214 | + $<INSTALL_INTERFACE:include> |
201 | 215 | )
|
202 | 216 |
|
203 | 217 | # Add the compile flags
|
@@ -226,3 +240,28 @@ set_target_properties(${PROJECT_NAME}
|
226 | 240 | RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
|
227 | 241 | OUTPUT_NAME "${OUTPUT_NAME}"
|
228 | 242 | )
|
| 243 | + |
| 244 | +include(GNUInstallDirs) |
| 245 | +include(CMakePackageConfigHelpers) |
| 246 | + |
| 247 | +set(GODOT_CPP_PACKAGE_NAME godot-cpp) # the find_package name |
| 248 | +set(GODOT_CPP_PACKAGE_DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${GODOT_CPP_PACKAGE_NAME}") |
| 249 | + |
| 250 | +configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/config.cmake.in |
| 251 | + "${PROJECT_BINARY_DIR}/cmake/${GODOT_CPP_PACKAGE_NAME}-config.cmake" |
| 252 | + INSTALL_DESTINATION "${GODOT_CPP_PACKAGE_DESTINATION}" |
| 253 | +) |
| 254 | + |
| 255 | +install(FILES ${PROJECT_BINARY_DIR}/cmake/${GODOT_CPP_PACKAGE_NAME}-config.cmake |
| 256 | + DESTINATION ${GODOT_CPP_PACKAGE_DESTINATION} |
| 257 | +) |
| 258 | + |
| 259 | +install(TARGETS godot-cpp EXPORT godot_cpp_targets) |
| 260 | +install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| 261 | +install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/gen/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| 262 | +install(FILES ${GODOT_GDEXTENSION_DIR}/gdextension_interface.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| 263 | + |
| 264 | +install(EXPORT godot_cpp_targets |
| 265 | + NAMESPACE godot-cpp:: |
| 266 | + FILE ${GODOT_CPP_PACKAGE_NAME}-targets.cmake |
| 267 | + DESTINATION "${GODOT_CPP_PACKAGE_DESTINATION}") |
0 commit comments