gcc - 在 CMake 中使用 -isystem 而不是 -I

在使用 gcc 构建时,CMake 中是否有任何方法可以强制通过 include_directories(或者可能通过不同的函数)指定的路径使用 -isystem 标志而不是 -I 标志?

见 http://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html#Directory-Options有关 -I 和 -isystem 的详细信息。

最佳答案

是的,您通过使用可选的 SYSTEM 标志强制将路径作为系统包含

include_directories(SYSTEM path)

https://cmake.org/cmake/help/latest/command/include_directories.html

从 CMake 2.8.12 开始,您可以使用新的 target_include_directories 在目标级别包含系统目录,同时利用 cmake 的新使用要求功能:

target_include_directories(foo SYSTEM PUBLIC path)

现在目标 foo 将使用 path 作为系统包含,并且链接到 foo 的任何内容也将自动使用 path 作为系统包含。您可以通过将 PUBLIC 关键字更改为 PRIVATE 或 INTERFACE 来控制这些使用要求的传播。

https://cmake.org/cmake/help/latest/command/target_include_directories.html

https://stackoverflow.com/questions/3371127/

相关文章:

java - Maven 编译器插件总是将一组源检测为 "stale"

ios - Xcode 8 无法存档 "Command/usr/bin/codesign faile

java - Maven多模块项目的构建顺序?

jenkins - 使用 H/1 * * * * 每分钟运行一次 Jenkins 作业

linux - 使用make构建后的.d文件是什么

c++ - Visual Studio 2013 错误 MS8020 Build tools v14

ios - React-native:如何从 Windows 构建 ios

c# - 使用 CMake 生成 C# 项目

java - 如何在命令行中编译多个java源文件

macos - xcode4:链接器错误:找不到选项的目录