【问题标题】:cmake can't find installed component using find_package (install COMPONENT != find_package COMPONENT ?)cmake 使用 find_package 找不到已安装的组件(安装 COMPONENT != find_package COMPONENT ?)
【发布时间】:2017-08-16 20:39:05
【问题描述】:

我已经使用 cmake 3.2 快一年了,取得了不错的成功。

我正在尝试分别安装“标题”和“库”组件,然后使用 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)

作为调试步骤,我确保 _FIND_COMPONENTS 在 cmake 配置中确实包含“标题”。即使它可以毫无问题地找到 .cmake 文件,但未设置 __FOUND。

这是我的想法。 install 命令的 COMPONENTS 与 find_package 命令的 COMPONENTS 不同。 find_package 的 COMPONENTS 是否真的在寻找 _ 库,而不是 install 定义的组件?

谢谢 杰瑞

【问题讨论】:

    标签: cmake


    【解决方案1】:

    find_package(Foo COMPONENTS A B C) 指的是已打包到 NAMESPACE Foo 中的库,并且会像 Foo::A Foo::B ... 一样链接。

    查看install(... COMPONENT) 的文档,我也不太明白它的作用。

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 2017-02-25
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 2022-12-29
      • 1970-01-01
      相关资源
      最近更新 更多