【问题标题】:Make Xcode ignore LLVM build warnings in 3rd party project让 Xcode 在 3rd 方项目中忽略 LLVM 构建警告
【发布时间】:2011-09-23 21:58:45
【问题描述】:

我的 Xcode 工作区中有一个第三方项目(它是我的主项目的依赖项),我希望 Xcode 忽略来自该第三方项目的所有构建警告。

最好在我的项目中忽略 Vendor/* 组的所有构建警告,因为这是我放置所有第三方代码的地方。

可能吗?

【问题讨论】:

    标签: xcode llvm


    【解决方案1】:

    是的,这是可能的,但前提是您在单独的目标中编译第三方文件。这样,您可以设置不同的编译器标志。

    假设您的主要目标是应用程序。您定义了构建设置以及编译器警告标志。

    现在您想使用一些第三方来源。您将它们导入到您的项目中,但它们会生成警告。您当然可以更改主要目标的设置,但我很确定您想保留自己的设置。

    只需在您的项目中创建一个额外的目标,它是一个静态库。 从主目标中删除第三方文件,并将它们添加到库中。

    在您的主要目标的构建阶段,将您的应用程序与静态库链接。

    这样,您将能够在应用程序中使用第三方代码,同时对第三方代码有不同的编译器设置。

    【讨论】:

      【解决方案2】:

      可以基于每个文件,请参阅http://blog.bluelightninglabs.com/2011/12/suppressing-xcode-warnings-on-a-per-file-basis/ 的博客条目

      总结一下:使用“构建阶段”选项卡上的编译器标志。

      【讨论】:

        【解决方案3】:

        转到构建阶段 > 编译源代码。 (可选)过滤列表。选择要排除的那些,然后双击 Compiler Flags 列下的空白区域。添加 -w 并回车:

        【讨论】:

        • 很遗憾,您无法通过包含文件夹进行过滤。
        【解决方案4】:

        如果您只担心包含警告,那么您可以将您的包含语句包装在以下内容中:

        #pragma clang diagnostic push
         // in reality, you will likely need to disable *more* than Wmultichar
        #pragma clang diagnostic ignored "-Wmultichar"
        #include <TheirLibrary/include.h>
        #pragma clang diagnostic pop
        

        如果您还想禁用它生成的构建警告,那么您可以使用-wGCC_WARN_INHIBIT_ALL_WARNINGS = YES 作为您链接或捆绑的第三方目标。

        理想情况下,如果供应商关闭,您将向供应商提交报告。如果它是开放的,那么也许你应该自己修补它。

        【讨论】:

        • 它可能有效,但我个人认为这是一个糟糕的选择,因为您的代码将依赖于 Clang 的编译指示...
        • @Macmade 你的回答详细说明了我回答的第二部分。如果您要链接到该库,很有可能您也希望在某个时候在您的程序中使用它。当它们包含在您的项目中时,如何建议禁用由第 3 方标头生成的警告?请注意,您还可以将#pragma clang diagnostics 包装在编译器检查中(因为如果需要,一些编译器会抱怨未知的编译指示)。
        • 你是对的,但是如果警告来自头文件,那么我会尝试寻找另一种解决方案,因为它可能意味着非常糟糕的代码...... :)
        • @Macmade 不一定。当使用我使用的警告设置编译时,即使是苹果的标题也会产生警告。您只是在构建脚本中看不到这些警告(使用最新版本的编译器),因为根本不会发出源自系统标头的警告。使用 c++/objc++ 扩展和程序,甚至是在头文件中使用静态函数的 C 库,事情也会变得更加复杂。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-27
        • 2015-10-10
        • 2012-10-23
        • 2015-12-29
        • 2016-02-26
        • 2016-04-23
        相关资源
        最近更新 更多