GoogleSignIn/Crashlytics/Firebase 的自定义编译器标志

Posted

技术标签:

【中文标题】GoogleSignIn/Crashlytics/Firebase 的自定义编译器标志【英文标题】:Custom Compiler Flags for GoogleSignIn/Crashlytics/Firebase 【发布时间】:2018-04-03 15:56:33 【问题描述】:

我正在尝试在我的主项目中解析编译器标志,例如 -Wno-auto-import。但我无法为 GoogleSignIn/Crashlytics/Firebase pod 设置编译器标志。我尝试将以下代码添加到我的 Podfile:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['WARNING_CFLAGS'] = "$(inherited) -Wno-auto-import"
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
    end
  end
end

但我仍然收到自动导入编译器错误。它适用于 facebook 登录和所有其他 pod。编译器标志也列在 Pods -> GTMOAuth2 -> Apple LLVM 9.0 - Custom Compiler Flags -> Other Warning Flags -> -Wno-auto-import

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您可以通过在您的 pod 文件中指定此标志来消除 所有 cocoapod 警告:

inhibit_all_warnings!

如果需要,您可以更精细一些,并为每个 pod 指定它:

pod 'GoogleSignIn', inhibit_warnings: true
pod 'Crashlytics', inhibit_warnings: true
pod 'Firebase', inhibit_warnings: true

如果您在项目中启用了-Weverything,则此可能不起作用,通常不鼓励这样做,因为它包含有错误或仍在开发中的警告。此标志将为您的 cocoapod 框架提供误报。更多信息在这里:https://softwareengineering.stackexchange.com/questions/122608/clang-warning-flags-for-objective-c-development/124574#124574


如果您仍想尝试手动编辑警告标志 - 那么您的代码示例看起来不错,请确保它没有被 xcconfig 文件覆盖

还要确保您进行了一次清理,以便以前的构建不会留下任何警告! Xcode 可能会很痛苦,并且有时会使它们保持更长的时间。检查生成的实际构建日志以验证它们是否仍在被提升

【讨论】:

我有“-Weverything -Wno-gnu -Wno-float-equal -Wno-double-promotion -Wno-objc-missing-property-synthesis -Wno-nullable-to-non-null-conversion - Wno-overriding-method-mismatch -Wno-direct-ivar-access -Wno-missing-variable-declarations -Wno-format-nonliteral -Wno-used-but-marked-unused -Wno-method-signatures -Wno-cstring- format-directive -Wno-switch-enum -Wno-cast-qual -Wno-bad-function-cast -Wno-unreachable-code-break -Wno-idiomatic-parentheses" 标志现在在我的项目中启用。我还添加了“inhibit_all_warnings!”到我不工作的 Podfile。我多次清理项目。 查看我关于-Weverything的注释 感谢您解决了这个问题。

以上是关于GoogleSignIn/Crashlytics/Firebase 的自定义编译器标志的主要内容,如果未能解决你的问题,请参考以下文章