@@ -194,10 +194,11 @@ if (GODOT_CPP_SYSTEM_HEADERS)
194194 set (GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE SYSTEM )
195195endif ()
196196
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}
197+ target_include_directories (${PROJECT_NAME} ${GODOT_SYSTEM_HEADERS_ATTRIBUTE} PUBLIC
198+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include >
199+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} /gen/include >
200+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /${GODOT_GDEXTENSION_DIR} >
201+ $<INSTALL_INTERFACE:include >
201202)
202203
203204# Add the compile flags
@@ -227,26 +228,42 @@ set_target_properties(${PROJECT_NAME}
227228 OUTPUT_NAME "${OUTPUT_NAME} "
228229)
229230
230- install (TARGETS ${PROJECT_NAME} EXPORT godot_cpp_targets)
231-
232- # Export the target to the build directory.
231+ # Export the target to the install directory.
232+ #
233+ # Install after build
234+ # cmake --install build --prefix /path/to/install
235+ #
233236# The target then can be imported by another cmake project like this:
234237# find_package(godot-cpp CONFIG REQUIRED)
235238#
236239# add_library(libfoo SHARED)
237240# set_target_properties(libfoo PROPERTIES POSITION_INDEPENDENT_CODE ON)
238- # target_link_libraries(libfoo PUBLIC godot::godot-cpp)
241+ # target_link_libraries(libfoo PUBLIC godot-cpp ::godot-cpp)
239242#
240- # And user provides the build directory to cmake:
241- # -DCMAKE_PREFIX_PATH=<absolute-path-to-godot-cpp-build-dir>.
242-
243- export (EXPORT godot_cpp_targets
244- FILE "${PROJECT_BINARY_DIR} /cmake/godot-cpp.cmake"
245- NAMESPACE godot::
246- )
243+ # And user provides the install directory to cmake:
244+ # -DCMAKE_PREFIX_PATH=/absolute/path/to/install
247245
246+ include (GNUInstallDirs)
248247include (CMakePackageConfigHelpers)
248+
249+ set (GODOT_CPP_PACKAGE_NAME godot-cpp) # the find_package name
250+ set (GODOT_CPP_PACKAGE_DESTINATION "${CMAKE_INSTALL_DATAROOTDIR} /${GODOT_CPP_PACKAGE_NAME} " )
251+
249252configure_package_config_file(${PROJECT_SOURCE_DIR} /cmake/config.cmake.in
250- "${PROJECT_BINARY_DIR} /cmake/godot-cpp-config.cmake"
251- INSTALL_DESTINATION "lib/cmake/godot-cpp"
253+ "${PROJECT_BINARY_DIR} /cmake/${GODOT_CPP_PACKAGE_NAME} -config.cmake"
254+ INSTALL_DESTINATION "${GODOT_CPP_PACKAGE_DESTINATION} "
255+ )
256+
257+ install (FILES ${PROJECT_BINARY_DIR} /cmake/${GODOT_CPP_PACKAGE_NAME} -config.cmake
258+ DESTINATION ${GODOT_CPP_PACKAGE_DESTINATION}
252259)
260+
261+ install (TARGETS godot-cpp EXPORT godot_cpp_targets)
262+ install (DIRECTORY include / DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
263+ install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /gen/include / DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
264+ install (FILES ${GODOT_GDEXTENSION_DIR} /gdextension_interface.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
265+
266+ install (EXPORT godot_cpp_targets
267+ NAMESPACE godot-cpp::
268+ FILE ${GODOT_CPP_PACKAGE_NAME} -targets.cmake
269+ DESTINATION "${GODOT_CPP_PACKAGE_DESTINATION} " )
0 commit comments