我正在尝试为我的iOS应用程序构建一个好的架构,我遇到了xcconfig配置问题。我有几个CocoaPods,它们包含警告是很自然的。我一直在CocoaPods集成之上使用inhibit_all_warnings!
指令来沉默那些。所以我的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!设置WARNING_CFLAGS配置变量时,pod指令工作,因为在这种情况下似乎忽略了它?
感谢您的帮助!
答案 0 :(得分:0)
警告的“漏掉”可能源于您在构建环境中使用-Weverything标志。我使用了类似的问题并遇到了同样的问题,直到我今天在this回答相关问题时遇到了问题。
长话短说:clang开发者撰写文章时强烈反对使用-Weverything,因为它甚至包含有缺陷或仍在开发中的警告。如果您需要更严格的构建环境,请首选使用-Wall,-Wextra和可选的-Wconversion。然后Cocoapods会正确响应并隐藏来自pod的警告。