2011-09-23 129 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

不幸的是,你不能通過包含文件夾進行過濾。 –