xcode - 在 Xcode 5.1.1 中使用 --system-header-prefix — 我错过了什么

标签 xcode clang

Clang’s documentation提到了一个名为 --system-header-prefix 的标志的可用性.

想法是所有包含的与此前缀匹配的 header 都将被视为系统 header ,而不是生成警告。

我想使用这个标志,而不是使用 -isystem 包含那些标题而不是 -I .

背景

我碰巧有一个(新)项目,它依赖于几个遗留库,但它本身具有非常严格的警告设置,并将这些警告视为错误。
结果是(不足为奇)一个项目由于包含的 legacy-library 的 header 生成的警告而无法构建。

这个想法是使用 --system-header-prefix=legacyLib/在 Xcode 的 OTHER_CFLAGS 中build设置。

但是,如果我这样做,clang 会给我以下错误消息:

clang: error: unsupported option '--system-header-prefix=legacyLib/'

我正在使用版本 5.1.1 (5B1008) — 即当前的公开版本。
clang --version的输出是
clang --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix

最佳答案

您指的是 Clang 3.5 文档。在 Clang 3.4 User's Manual此选项称为 -isystem-prefix .该选项已重命名为 --system-header-prefix in r204775, 2.5 months after 3.4 release .

所以你必须使用 -isystem-prefix选项,但没有说明是 cc1选项,所以你必须像这样使用它

clang -I ./nested -Xclang -isystem-prefix -Xclang legacyLib/ test.c
-Xclang用于将下一个选项传递给 cc1 .顺便说一句,我注意到如果 legacyLib/ 警告不会被抑制与 test.c 在同一目录中.我不知道这是不是一个错误,但如果你不同意我的观点,请file a bug report .上一个命令适用于以下目录结构
<working directory>
|- test.c, which has #include "legacyLib/header.h"
`- nested/
   `- legacyLib/
      `- header.h, which has warnings

为了将来引用,Clang 3.5 支持 --system-header-prefix ,即以下命令有效(使用 clang 版本 3.5.0 (trunk 207361) 检查)
clang -I ./nested --system-header-prefix legacyLib/ test.c

关于xcode - 在 Xcode 5.1.1 中使用 --system-header-prefix — 我错过了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23337607/

相关文章:

xcode - 开始使用 Clang 是否明智?

ios - Swift 3 在单元格按钮上添加选择器问题

c++ - gcc 和 clang 在运算符重载解析期间隐式实例化模板参数

优化后代码显示不同的行为

ios - 较旧的项目停止使用最新的模拟器更新进行构建

iOS8 SDK 的静态分析器错误

gcc - 如何使用 autotools 设置特定于编译器的标志

iphone - IBAction 和 IBOutlet 澄清

ios - Skoobler界面导航

objective-c - 在同一框架内将私有(private) Objective-C header 导入 Swift