在cmake中区分带有和不带'SYSTEM'选项的include_directories

时间:2017-11-17 11:00:08

标签: cmake

我正在使用get_property( … PROPERTY INCLUDE_DIRECTORIES)在CMake项目中进行调试。有没有办法告诉使用和不使用SYSTEM选项完成哪些包含目录?

在以下示例中,我看到没有区别

include_directories("../B")
include_directories(SYSTEM "../A")

get_property( reqs TARGET main PROPERTY INCLUDE_DIRECTORIES)
message(STATUS "main requires ${reqs}")

打印:

-- main requires /home/pseyfert/coding/system/C/../B;/home/pseyfert/coding/system/C/../A

1 个答案:

答案 0 :(得分:1)

有目标属性INTERFACE_SYSTEM_INCLUDE_DIRECTORIES,其中包含已包含目录的属性,已标记为 SYSTEM

正如该属性的名称所示(并且如文档中所述), INTERFACE_SYSTEM_INCLUDE_DIRECTORIES 仅包含 INTERFACE 目录,这些目录将传播到与给定目标链接的目标。从CMake文档中不清楚 PRIVATE 包含目录应该如何区分。