CMake Tutorial Step 11

本文详细介绍了如何使用CMake使自己的项目能够被其他项目引用。主要步骤包括在CMakeLists.txt中添加export配置,安装导出的CMake文件,创建Config.cmake.in模板,并配置package_config_file及version文件。最后,确保.cmake文件安装到正确的位置,以便其他项目通过find_package()找到并引用。

原文链接: Step 11: Adding Export Configuration

1. 让自己的项目可以被其他项目引用

    1. 为项目生成 CMake 文件
      install(TARGETS ${installable_libs}
              EXPORT MathFunctionsTargets
              DESTINATION lib)
      
      在 install 命令中通过添加 EXPORT 命令导出 Cmake 文件
    1. 把导出的 Cmake 文件安装到指定目录
      install(EXPORT MathFunctionsTargets
        FILE MathFunctionsTargets.cmake
        DESTINATION lib/cmake/MathFunctions)
      
    1. 为项目添加 Config.cmake.in
      其他项目通过 find_package() 引用本项目时并不是直接搜索 .cmake 文件
      而是通过 Config.cmake.in 文件来查找 .cmake 文件在哪里
      @PACKAGE_INIT@
      include ( "${CMAKE_CURRENT_LIST_DIR}/MathFunctionsTargets.cmake" )
      
      本项目的 CMakeList 还要添加
      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
      )
      
      第一个 configure_package_config_file 是根据 .in 生成 Config.cmake 的
      第二个 write_basic_package_version_file 是根据 .in 生成 ConfigVersion.cmake 的
      这样在 find_package() 就可以添加版本要求了
    1. 安装 .cmake 文件
      install(FILES
        ${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake
        ${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake
        DESTINATION lib/cmake/MathFunctions
        )
      
      .cmake 文件需要安装到指定位置才可以被 find_package() 搜索到,如果不安装到系统默认位置,在其他项目 find_package() 时需要指定目录
      set(my_llib_DIR "path to search")
      find_package(my_llib 1.0 REQUIRED)
      
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值