【问题标题】:install TBB_IMPORTED_TARGETS with cmake使用 cmake 安装 TBB_IMPORTED_TARGETS
【发布时间】:2019-08-01 14:09:17
【问题描述】:

我用 tbb_build 命令编译 TBB。为了允许在不添加到加载路径的情况下搜索 TBB 库,我想将 TBB 库(libtbb.so、libtbbmalloc.so、libtbbmalloc_proxy.so)安装到目标文件夹。我用了命令

安装(文件 ${TBB_IMPORTED_TARGETS} DESTINATION 库)

但是,cmake在安装过程中会报错:

文件安装找不到 “${application_source_folder}/TBB::tbb”。 调用堆栈(最近的调用优先): cmake_install.cmake:84(包括)

Makefile:73:目标“安装”的配方失败

如何告诉 cmake 安装这些库?截至目前,我必须手动复制到目的地。

【问题讨论】:

    标签: cmake tbb


    【解决方案1】:

    在您的情况下,CMake 将目标名称视为文件名。通常对于安装目标,您应该使用install(TARGETS ...) 而不是install(FILES ...)但是它不适用于 IMPORTED 目标(请参阅Can I install shared imported library?)。

    您可以使用解决方法:使用get_target_property 获取所需文件并使用install(FILES ...) 进行安装:

    # Collect IMPORTED_LOCATION_RELEASE values from all TBB targets
    foreach(tbb_target ${TBB_IMPORTED_TARGETS})
        get_target_property(tbb_lib ${tbb_target} IMPORTED_LOCATION_RELEASE)
        list(APPEND tbb_libs_to_install ${tbb_lib})
    endforeach()
    
    # Install the collected values
    install(FILES ${tbb_libs_to_install} DESTINATION libs)
    

    您可以使用其他属性来获取其他文件,例如对于 TBB 库的调试版本,请使用 IMPORTED_LOCATION_DEBUG 属性。

    【讨论】:

      猜你喜欢
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多