2011-09-23 128 views
6

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

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

可能吗?

回答

5

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

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

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

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

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

这样,您就可以在应用程序中使用第三方代码,同时为第三方代码提供不同的编译器设置。

3

如果你担心只有通过包括警告,那么你可以用你的包括在此声明:

#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对于您链接到或绑定的第三方目标。

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

+0

它可以工作,但我个人认为这是一个糟糕的选择,因为你的代码将成为依赖于锵的编译指示... – Macmade

+0

@Macmade你的答案细节我的答案的第二部分。如果你链接到图书馆,*机会是*,你也希望在某个时候在你的程序中使用它。当它们包含在项目中时,如何建议禁用由第三方标题生成的警告?请注意,您也可以在编译器检查中包装#pragma clang诊断程序(因为有些编译器会根据请求对未知编译指示进行投诉)。 – justin

+0

你是对的,但如果警告来自头文件,那么我会尝试寻找另一个解决方案,因为它可能意味着非常糟糕的代码...:) – Macmade

4

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

Adding compiler flag to Build Phase

+1

不幸的是,你不能通过包含文件夹进行过滤。 –