cmake 许多 INTERFACE_INCLUDE_DIRECTORIES

标签 cmake

我正在创建一个希望公开两个接口(interface)包含目录的导入目标:

list(APPEND LIB_INCLUDE_DIRS "dir1")
list(APPEND LIB_INCLUDE_DIRS "dir2")

add_library(lib SHARED IMPORTED GLOBAL)
set_target_properties(
    lib
    PROPERTIES
    IMPORTED_LOCATION "something"
    INTERFACE_INCLUDE_DIRECTORIES ${LIB_INCLUDE_DIRS}
)

不幸的是,有一个错误: set_target_properties 调用的参数数量不正确。

如果我尝试只设置第一个目录,它可以工作。有没有办法同时设置?还是 INTERFACE_INCLUDE_DIRECTORIES 的复数形式只是具有讽刺意味?

最佳答案

只需将目录列表放在引号中

set_target_properties(
    lib
    PROPERTIES
    IMPORTED_LOCATION "something"
    INTERFACE_INCLUDE_DIRECTORIES "${LIB_INCLUDE_DIRS}"
)

否则,列表将再次扩展为参数。

引用文献
  • cmake: when to quote variables?
  • 关于cmake 许多 INTERFACE_INCLUDE_DIRECTORIES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42509551/

    相关文章:

    c++ - 我无法使用 cmake 链接静态库

    c++ - 我的 qmake 构建在调试构建中的速度是 cmake 的两倍多,为什么?

    合并两个共享 (.so) 库

    linux - 在 Centos7 中安装 Cmake 出现错误。如何处理?

    macos - CMake IN_LIST关键字的行为貌似不正确

    c++ - 没有OWNER_WRITE的cmake安装目录

    c++ - 使用 cmake 强制构建 32 位或 64 位的选项

    cmake - KitWare 的在 CMake 中查找库的指南中弃用了哪些内容?

    macos - Mach-O 平台上的库版本控制

    c++ - Cmake 的定义问题