From 864e24774da8e05e989cff4a030ba900574f41cc Mon Sep 17 00:00:00 2001 From: JosiahWI <41302989+JosiahWI@users.noreply.github.com> Date: Sat, 31 Jul 2021 06:04:06 -0500 Subject: [PATCH] Export targets to build tree (#49) It is insecure and inconvenient to necessitate installing IrrlichtMt to access the target export. A copy of the export is now placed in the build tree during configuration so that it can be directly accessed from any project by pointing find_package() to look at the IrrlichtMt source directory. --- .gitignore | 2 ++ CMakeLists.txt | 16 ++++++++++++---- README.md | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 044c55db..d3bb6408 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,10 @@ CMakeFiles CMakeCache.txt cmake_install.cmake +install_manifest.txt IrrlichtMtConfig.cmake IrrlichtMtConfigVersion.cmake +IrrlichtMtTargets.cmake Makefile libs/* *.so* diff --git a/CMakeLists.txt b/CMakeLists.txt index 89f962be..6552ef70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,14 @@ if(BUILD_EXAMPLES) add_subdirectory(examples) endif() +# Export a file that describes the targets that IrrlichtMt creates. +# The file is placed in the location FILE points to, where CMake can easily +# locate it by pointing CMAKE_PREFIX_PATH to this project root. +export(EXPORT IrrlichtMt-export + FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtTargets.cmake" + NAMESPACE IrrlichtMt:: +) + # Installation of headers. install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/irrlichtmt" @@ -50,18 +58,18 @@ install(EXPORT IrrlichtMt-export include(CMakePackageConfigHelpers) configure_package_config_file("${PROJECT_SOURCE_DIR}/Config.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/IrrlichtMtConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfig.cmake" INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/IrrlichtMt" NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO ) write_basic_package_version_file( - "${CMAKE_CURRENT_BINARY_DIR}/IrrlichtMtConfigVersion.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfigVersion.cmake" COMPATIBILITY AnyNewerVersion ) install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/IrrlichtMtConfig.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/IrrlichtMtConfigVersion.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfigVersion.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/IrrlichtMt" ) diff --git a/README.md b/README.md index 243cdea9..ecd1d105 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,8 @@ e.g. on a Linux system you might want to build for local use like this: cmake . -DBUILD_SHARED_LIBS=OFF make -j$(nproc) +This will put an IrrlichtMtTargets.cmake file into a cmake/ directory in the current build directory, and it can then be imported from another project by pointing find_package() to the source directory of this project, or by setting the CMAKE_PREFIX_PATH variable to that same path. + Platforms ---------