是否可以使用cmake 2.6(或更高版本,如果在此版本中不可能)来检查include目录是否标记为SYSTEM
(例如使用isystem
gcc标志进行编译,请参阅{{ 3}})?
例如,我使用以下命令获取当前目标的include目录:
GET_PROPERTY(_target_include_dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
我如何知道哪些标记为isystem
?
由于
答案 0 :(得分:1)
查看CMake源代码,添加了include_directories
的包含目录是否标记为SYSTEM
似乎是在CMake内部跟踪,并且在CMakeLists.txt
¹内无法使用
但是,对于目标属性INTERFACE_INCLUDE_DIRECTORIES
(由target_include_directories
填充PUBLIC
或INTERFACE
),还有另一个目标属性命名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
属性,但我无法使其工作。