如何通过 .xcconfig 禁用特定的 clang 诊断?

Posted

技术标签:

【中文标题】如何通过 .xcconfig 禁用特定的 clang 诊断?【英文标题】:How do you disable specific clang diagnostics via an .xcconfig? 【发布时间】:2013-07-11 23:42:15 【问题描述】:

好的,所以说你在编译时遇到了一个错误,例如..

保留的块属性不复制块 - 改用复制属性

因为……

-Wobjc-noncopy-retain-block-property

可以解决问题,或者可能添加一个标志,例如

-Wno-objc-noncopy-retain-block-property

但是让我们进一步假设您喜欢使用“配置”(.xcconfig) 文件,并且您想,“好吧,因为我可以使用...

CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = NO

也许我会试试……”

CLANG_WARN_OBJC_NONCOPY_RETAIN_BLOCK_PROPERTY = NO

只是发现这不起作用。

所以问题保留,嗯……什么有效?

【问题讨论】:

抱歉,错字...是的,我试过了。 对..应该是! 注意:这些 xcode 构建设置(全部大写)通常是实际构建设置的别名。 【参考方案1】:

Xcode 允许您使用 -C 从 Build Settings 窗格复制条目;粘贴时的结果是与在 .xcconfig 文件中使用的设置相对应的文本。

当我在“其他警告标志”行中输入 -Wno-objc-noncopy-retain-block-property 并将其复制粘贴到新的 .xcconfig 文件中时,我得到了这样的结果:

//:configuration = Debug
WARNING_CFLAGS = -Wno-objc-noncopy-retain-block-property

//:configuration = Release
WARNING_CFLAGS = -Wno-objc-noncopy-retain-block-property

这似乎确实抑制了关于 retain Block 属性的警告。

【讨论】:

+1 - 你也可以从构建设置视图中拖放 我认为您所说的可能是“尽善尽美”.. 我只想补充一下 - 因为 WARNING_CFLAGS 可能会设置在几个“地方”......你可以组合它们(并指定特定的 SDK 等),例如...WARNING_CFLAGS[sdk=macosx*] = $(WARNING_CFLAGS) -Wno-conversion -Wno-objc-noncopy-retain-block-property...

以上是关于如何通过 .xcconfig 禁用特定的 clang 诊断?的主要内容,如果未能解决你的问题,请参考以下文章

iOS多工程中子工程依赖pod通过xcconfig文件配置

如何在特定条件通过时启用或禁用反应中的p标签。

如何通过 XML 配置仅针对特定 URL 模式在 Spring Security 4 中禁用 CSRF?

xcconfigs:如何为一个目标设置多个配置

Clash of Clans 攻略 如何得到五工人

当延迟加载禁用时,如何通过实体框架仅将导航属性的特定属性包含到查询中?