2

我正在尝试为我的 iOS 应用程序构建一个良好的架构,但我的 xcconfig 配置遇到了问题。我有几个 CocoaPods,它们包含警告是很自然的。我一直在使用inhibit_all_warnings!CocoaPods 集成之上的指令来沉默那些人。所以我的 Podfile 看起来像这样:

platform :ios, '7.0'

inhibit_all_warnings!

source 'https://github.com/CocoaPods/Specs.git'

pod 'AFNetworking', '~> 2.x'
...

这实际上有效,使用此配置构建项目时不会显示任何警告。

但是我在构建应用程序时试图强制一个非常严格的环境,所以我创建了几个 .xcconfig 文件,它们强制警告错误并启用几乎所有可能的警告。这是 xcconfig 文件中实际执行此操作的部分:

GCC_TREAT_WARNINGS_AS_ERRORS = YES;
WARNING_CFLAGS = -Weverything -Wno-objc-missing-property-synthesis -Wno-unused-macros;

这两行都正常工作,但问题似乎是 CocoaPod 库的警告也被视为错误。禁用GCC_TREAT_WARNINGS_AS_ERRORS将使项目再次编译,但警告会从 CocoaPods 返回。

所以我的问题是:

我将如何正确设置我的 .xcconfig 文件,WARNING_CFLAGS 将仅用于项目文件,而不是库文件?

或者如何制作inhibit_all_warnings!pod 指令在设置 WARNING_CFLAGS 配置变量时起作用,因为在这种情况下它似乎忽略了它?

感谢大家的帮助!

4

1 回答 1

0

这种“渗透”警告可能源于您在构建环境中使用 -Weverything 标志。我使用了类似的方法并遇到了同样的问题,直到今天我偶然发现了一个相关问题答案。

长话短说:写这篇文章的clang开发人员强烈反对使用-Weverything,因为它甚至包含有错误或仍在开发中的警告。如果您需要更严格的构建环境,最好使用 -Wall、-Wextra 和可选的 -Wconversion。然后 Cocoapods 将正确响应并隐藏 pod 的警告。

于 2014-10-24T14:22:33.500 回答