Cmake:检查系统是否包含目录

时间:2016-08-08 09:37:24

标签: c++ cmake include

是否可以使用cmake 2.6(或更高版本,如果在此版本中不可能)来检查include目录是否标记为SYSTEM(例如使用isystem gcc标志进行编译,请参阅{{ 3}})?

例如,我使用以下命令获取当前目标的include目录:

GET_PROPERTY(_target_include_dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)

我如何知道哪些标记为isystem

由于

1 个答案:

答案 0 :(得分:1)

查看CMake源代码,添加了include_directories的包含目录是否标记为SYSTEM似乎是在CMake内部跟踪,并且在CMakeLists.txt¹内无法使用

但是,对于目标属性INTERFACE_INCLUDE_DIRECTORIES(由target_include_directories填充PUBLICINTERFACE),还有另一个目标属性命名INTERFACE_SYSTEM_INCLUDE_DIRECTORIES

add_library(testlib test.cc)

target_include_directories(testlib SYSTEM INTERFACE /target_system)

get_property(_system_include_dirs TARGET testlib PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES)
message("System: ${_system_include_dirs}")

所以也许你可以改用它。

¹通过生成器表达式提到了SYSTEM_INCLUDE_DIRECTORIES属性,但我无法使其工作。