我已经使用cmake 3.2近一年了,取得了很好的成功。
我正在尝试单独安装'headers'和'library'组件,然后使用find_package来要求每个组件。使用自定义目标安装工作正常。但是,为刚刚安装的软件包/组件添加COMPONENT关键字时,find_package失败。
install(FILES
include/sum.h
...
include/sumvmtypes.h
DESTINATION ${APP_INCLUDE_INSTALL_DIR}/sum
COMPONENT headers
)
add_custom_target(install_headers
COMMAND "${CMAKE_COMMAND}" -DCMAKE_INSTALL_COMPONENT=headers
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake" )
我正在使用PackageConfigHelper为项目创建包配置文件,它一直运行正常。
configure_package_config_file(${PACKAGE_NAME}-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_DIR}/${PACKAGE_NAME}
PATH_VARS NEOS_INCLUDE_INSTALL_DIR LIB_INSTALL_DIR INCLUDE_INSTALL_DIR APP_INCLUDE_INSTALL_DIR )
我将用于检查组件的宏添加到... cmake.in文件中。
check_required_components(neo_sumlib)
作为调试步骤,我确保< package> _FIND_COMPONENTS确实在cmake配置中包含'headers'。即使它可以毫无问题地找到< package> .cmake文件,但未设置< package> _< comp> _FOUND。
这是我的想法。 install命令的COMPONENTS与find_package命令的COMPONENTS不同。是 find_package 的COMPONENTS是否真的在寻找< package> _< component>库,而不是安装定义的组件?
感谢 杰里