【发布时间】:2011-09-23 21:58:45
【问题描述】:
我的 Xcode 工作区中有一个第三方项目(它是我的主项目的依赖项),我希望 Xcode 忽略来自该第三方项目的所有构建警告。
最好在我的项目中忽略 Vendor/* 组的所有构建警告,因为这是我放置所有第三方代码的地方。
可能吗?
【问题讨论】:
我的 Xcode 工作区中有一个第三方项目(它是我的主项目的依赖项),我希望 Xcode 忽略来自该第三方项目的所有构建警告。
最好在我的项目中忽略 Vendor/* 组的所有构建警告,因为这是我放置所有第三方代码的地方。
可能吗?
【问题讨论】:
是的,这是可能的,但前提是您在单独的目标中编译第三方文件。这样,您可以设置不同的编译器标志。
假设您的主要目标是应用程序。您定义了构建设置以及编译器警告标志。
现在您想使用一些第三方来源。您将它们导入到您的项目中,但它们会生成警告。您当然可以更改主要目标的设置,但我很确定您想保留自己的设置。
只需在您的项目中创建一个额外的目标,它是一个静态库。 从主目标中删除第三方文件,并将它们添加到库中。
在您的主要目标的构建阶段,将您的应用程序与静态库链接。
这样,您将能够在应用程序中使用第三方代码,同时对第三方代码有不同的编译器设置。
【讨论】:
可以基于每个文件,请参阅http://blog.bluelightninglabs.com/2011/12/suppressing-xcode-warnings-on-a-per-file-basis/ 的博客条目
总结一下:使用“构建阶段”选项卡上的编译器标志。
【讨论】:
转到构建阶段 > 编译源代码。 (可选)过滤列表。选择要排除的那些,然后双击 Compiler Flags 列下的空白区域。添加 -w 并回车:
【讨论】:
如果您只担心包含警告,那么您可以将您的包含语句包装在以下内容中:
#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
如果您还想禁用它生成的构建警告,那么您可以使用-w 或GCC_WARN_INHIBIT_ALL_WARNINGS = YES 作为您链接或捆绑的第三方目标。
理想情况下,如果供应商关闭,您将向供应商提交报告。如果它是开放的,那么也许你应该自己修补它。
【讨论】:
#pragma clang diagnostics 包装在编译器检查中(因为如果需要,一些编译器会抱怨未知的编译指示)。