cmake很多INTERFACE_INCLUDE_DIRECTORIES

kro*_*jew 2 cmake

我正在创建一个导入目标,该目标希望公开两个接口包含目录:

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}
)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是一个错误:set_target_properties的参数数目错误。

如果我尝试仅设置第一个目录,它将起作用。有办法设置两者吗?还是INTERFACE_INCLUDE_DIRECTORIES的复数形式具有讽刺意味?

Flo*_*ian 5

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

set_target_properties(
    lib
    PROPERTIES
    IMPORTED_LOCATION "something"
    INTERFACE_INCLUDE_DIRECTORIES "${LIB_INCLUDE_DIRS}"
)
Run Code Online (Sandbox Code Playgroud)

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

参考文献