CMake Tutorial Step 11
原文链接: Step 11: Adding Export Configuration
1. 让自己的项目可以被其他项目引用
-
- 为项目生成 CMake 文件
在 install 命令中通过添加 EXPORT 命令导出 Cmake 文件install(TARGETS ${installable_libs} EXPORT MathFunctionsTargets DESTINATION lib)
- 为项目生成 CMake 文件
-
- 把导出的 Cmake 文件安装到指定目录
install(EXPORT MathFunctionsTargets FILE MathFunctionsTargets.cmake DESTINATION lib/cmake/MathFunctions)
- 把导出的 Cmake 文件安装到指定目录
-
- 为项目添加 Config.cmake.in
其他项目通过 find_package() 引用本项目时并不是直接搜索 .cmake 文件
而是通过 Config.cmake.in 文件来查找 .cmake 文件在哪里
本项目的 CMakeList 还要添加@PACKAGE_INIT@ include ( "${CMAKE_CURRENT_LIST_DIR}/MathFunctionsTargets.cmake" )
第一个 configure_package_config_file 是根据 .in 生成 Config.cmake 的include(CMakePackageConfigHelpers) # generate the config file that is includes the exports configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake" INSTALL_DESTINATION "lib/cmake/example" NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO) write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake" VERSION "${Tutorial_VERSION_MAJOR}.${Tutorial_VERSION_MINOR}" COMPATIBILITY AnyNewerVersion )
第二个 write_basic_package_version_file 是根据 .in 生成 ConfigVersion.cmake 的
这样在 find_package() 就可以添加版本要求了
- 为项目添加 Config.cmake.in
-
- 安装 .cmake 文件
.cmake 文件需要安装到指定位置才可以被 find_package() 搜索到,如果不安装到系统默认位置,在其他项目 find_package() 时需要指定目录install(FILES ${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake DESTINATION lib/cmake/MathFunctions )set(my_llib_DIR "path to search") find_package(my_llib 1.0 REQUIRED)
- 安装 .cmake 文件
本文详细介绍了如何使用CMake使自己的项目能够被其他项目引用。主要步骤包括在CMakeLists.txt中添加export配置,安装导出的CMake文件,创建Config.cmake.in模板,并配置package_config_file及version文件。最后,确保.cmake文件安装到正确的位置,以便其他项目通过find_package()找到并引用。
2561

被折叠的 条评论
为什么被折叠?



