加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用–system-header-prefix和Xcode 5.1.1 – 我错过了什么

发布时间:2020-12-14 19:27:50 所属栏目:百科 来源:网络整理
导读:Clang’s documentation提到了一个名为–system-header-prefix的标志的可用性. 所有包含与此前缀匹配的标头的想法将被视为系统标头,而不会生成警告. 我想使用此标志而不是使用-isystem而不是-I来包含这些标头. 背景 我碰巧有一个(新)项目依赖于几个遗留库,但
Clang’s documentation提到了一个名为–system-header-prefix的标志的可用性.

所有包含与此前缀匹配的标头的想法将被视为系统标头,而不会生成警告.

我想使用此标志而不是使用-isystem而不是-I来包含这些标头.

背景

我碰巧有一个(新)项目依赖于几个遗留库,但它本身具有非常严格的警告设置,并将这些警告视为错误.
结果是(并不太令人惊讶)由于包含的遗留库的标头生成的警告而无法构建的项目.

我们的想法是在Xcode的OTHER_CFLAGS构建设置中使用–system-header-prefix = legacyLib /.

但是,如果我这样做,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读