CMake 添加导出配置
在安装和测试过程中,我们增加了 CMake 安装库文件和项目依赖的头文件(bin、lib、include)的能力。在打包可安装程序的过程中,我们增加了打包这些信息的能力,这样它就可以分发给其他人使用 接下来是如何添加必要的信息,以便其他 CMake 项目可以使用我们的项目,无论是在构建目录、本地安装还是打包的时候 第一步是更新我们的 install(TARGETS) 命令,不仅指定 DESTINATION,还指定 EXPORT。EXPORT 关键字生成一个 CMake 文件,其中包含从安装树导入安装命令中列出的所有目标的代码。 修改 MathFunctions/CMakeLists.txt 文件代码: # install rules set(installable_libs MathFunctions tutorial_compiler_flags)if(TARGET SqrtLibrary) list(APPEND installable_libs SqrtLibrary)endif()install(TARGETS ${installable_libs} EXPORT MathFunctionsTargets DESTINATION lib)install(FILES MathFunctions.h DESTINATION include)第二步我们还需要显式地安装生成的 MathFunctionsTargets.cmake 文件。在顶层的 CMakeLists.txt 文件底部添加如下代码: install(EXPORT MathFunctionsTargets FILE MathFunctionsTargets.cmake DESTINATION lib/cmake/MathFunctions )此时构建会有下面的错误: 这是因为在生成导出信息期间,它将导出内在绑定到当前计算机项目的路径,在其他计算机上路径无效。 第三步更新 MathFunctions/CMakeLists.txt 中的 target_include_directories() 用来设置在 build 时和在 install/package 时需要使用不同的 INTERFACE locations。 # 将当前二进制目录添加到包含目录列表中 target_include_directories(MathFunctions # INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:include> )第四步我们还需要生成一个 MathFunctionsConfig.cmake,这样 CMake 的 find_package() 命令就可以找到我们的项目。在顶层的项目目录添加 Config....