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.
This commit is contained in:
JosiahWI 2021-07-31 06:04:06 -05:00 committed by GitHub
parent 6c78f181b5
commit 864e24774d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 4 deletions

2
.gitignore vendored
View File

@ -1,8 +1,10 @@
CMakeFiles CMakeFiles
CMakeCache.txt CMakeCache.txt
cmake_install.cmake cmake_install.cmake
install_manifest.txt
IrrlichtMtConfig.cmake IrrlichtMtConfig.cmake
IrrlichtMtConfigVersion.cmake IrrlichtMtConfigVersion.cmake
IrrlichtMtTargets.cmake
Makefile Makefile
libs/* libs/*
*.so* *.so*

View File

@ -36,6 +36,14 @@ if(BUILD_EXAMPLES)
add_subdirectory(examples) add_subdirectory(examples)
endif() 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. # Installation of headers.
install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/" install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/irrlichtmt" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/irrlichtmt"
@ -50,18 +58,18 @@ install(EXPORT IrrlichtMt-export
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
configure_package_config_file("${PROJECT_SOURCE_DIR}/Config.cmake.in" 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" INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/IrrlichtMt"
NO_SET_AND_CHECK_MACRO NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO
) )
write_basic_package_version_file( write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/IrrlichtMtConfigVersion.cmake" "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfigVersion.cmake"
COMPATIBILITY AnyNewerVersion COMPATIBILITY AnyNewerVersion
) )
install(FILES install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/IrrlichtMtConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/IrrlichtMtConfigVersion.cmake" "${CMAKE_CURRENT_BINARY_DIR}/cmake/IrrlichtMtConfigVersion.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/IrrlichtMt" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/IrrlichtMt"
) )

View File

@ -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 cmake . -DBUILD_SHARED_LIBS=OFF
make -j$(nproc) 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 Platforms
--------- ---------