gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:58:55 28 4
gpt4 key购买 nike

是否可以使用 cmake 2.6(或更高版本,如果在此版本中不可能)检查包含目录是否标记为 SYSTEM(例如,使用 isystem 编译gcc 标志,参见 2.8 System Headers )?

例如,我获取当前目标的包含目录:

GET_PROPERTY(_target_include_dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)

我怎么知道哪些被标记为isystem

谢谢

最佳答案

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

但是,对于 target 属性 INTERFACE_INCLUDE_DIRECTORIES(由带有 PUBLICINTERFACE 的 target_include_directories 填充),还有另一个名为 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 属性,但我无法让它工作。

关于c++ - Cmake:检查系统是否包含目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38825765/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com