CMake中configure_package_config_file()作用及INSTALL_DESTINATION疑问
CMake configure_package_config_file 疑问解答
核心结论
configure_package_config_file()只负责生成配置文件,不会自动执行安装操作,文件的安装完全由install()命令控制。- 你最终在
<安装目录>/lib/cmake/MathFunctions下找到文件,是因为install(FILES)命令明确指定了这个目标路径,和configure_package_config_file()中的INSTALL_DESTINATION参数无关。
INSTALL_DESTINATION 参数的实际作用
这个参数的核心作用是让生成的MathFunctionsConfig.cmake文件内部的路径变量自动适配安装后的位置,而非控制文件本身的安装路径:
- CMake会基于你指定的
INSTALL_DESTINATION,自动计算并替换Config.cmake.in模板中@PACKAGE_INIT@宏相关的路径变量(比如PACKAGE_PREFIX_DIR、PACKAGE_INCLUDE_DIR等)。 - 举个例子:如果你的库头文件安装在
${CMAKE_INSTALL_PREFIX}/include,当你在configure_package_config_file()中指定INSTALL_DESTINATION "lib/cmake/example",生成的Config.cmake文件会自动算出正确的前缀路径,确保其他项目通过find_package(MathFunctions)找到库时,能准确定位到头文件、库文件等资源。
补充说明
你在教程中看到的INSTALL_DESTINATION "lib/cmake/example"只是模板配置时的路径参考,实际安装路径完全由后续的install()命令决定。这也是为什么你没有在预期的lib/cmake/example路径下找到文件——因为install(FILES)命令的DESTINATION才是安装路径的最终控制项。
内容的提问来源于stack exchange,提问作者QualsPassed
相关产品推荐
相关产品推荐

