【发布时间】:2011-12-21 07:25:51
【问题描述】:
我已经将three20项目导入到我的项目中,当我用iOS 5升级到Xcode 4.2时,项目中出现了一堆警告。
我不在乎它们,但它们会产生很大的噪音,而且现在我的项目中很容易错过任何真正的警告。有没有办法禁用这些特定库的警告?
【问题讨论】:
标签: xcode xcode4.2 compiler-warnings suppress-warnings
我已经将three20项目导入到我的项目中,当我用iOS 5升级到Xcode 4.2时,项目中出现了一堆警告。
我不在乎它们,但它们会产生很大的噪音,而且现在我的项目中很容易错过任何真正的警告。有没有办法禁用这些特定库的警告?
【问题讨论】:
标签: xcode xcode4.2 compiler-warnings suppress-warnings
如果您的第三方库被添加为单独的目标,您可以检查 Inhibit all warnings 以获取该特定目标以关闭所有警告。
如果您的库作为纯源文件添加到当前目标,您可以为各个源设置 -w 编译器标志以静音其中的所有警告。您必须转到目标配置的Build phases 菜单并通过双击每个文件末尾输入-w 标志为Compile Sources 部分中的每个源文件设置此标志。
【讨论】:
-w -Xanalyzer -analyzer-disable-checker
-analyzer-disable-checker 替换为 -analyzer-disable-all-checks。
如果您使用的是 pod,您可以将其添加到您的 podfile 以防止警告记录:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['GCC_WARN_INHIBIT_ALL_WARNINGS'] = "YES"
end
end
end
【讨论】:
inhibit_all_warnings!,如:stackoverflow.com/questions/13208202/…
inhibit_all_warnings! 标志,因为每当执行pod install 时它都会被覆盖。我更喜欢在 Podfile 中设置
如果警告来自包含的库或框架头文件,您可以像这样包装包含语句:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnullability-completeness"
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKShareKit/FBSDKShareKit.h>
#pragma clang diagnostic pop
将您的警告标志放在上面的第二行。您可以在此处查找警告标志:https://clang.llvm.org/docs/DiagnosticsReference.html
【讨论】:
如果警告来自 Carthage 添加的框架(对我来说是 Rollbar):
Carthage/Build/<platform> 拖到 Xcode 中,将其添加到您刚刚创建的 dummy/wrapper 框架 (RollbarWrapper)转到虚拟/包装框架 (RollbarWrapper) 的构建设置并将“禁止所有警告”设置为 是
接下来,将框架(滚动条)添加到应用程序目标的框架、库和嵌入式内容部分并设置为不嵌入
copy-frameworks 脚本以复制Rollbar 框架)【讨论】: