2016-10-30 37 views
1

我有一個具有多個目標的項目。一個目標爲10.10+(64位),一個目標爲10.7+(32位),另一個目標爲10.5+。它們是由各種版本的Finale音樂符號軟件託管的插件。我意識到10.5的目標已經很老了,但是它必須用10.6 sdk來構建,因爲在以後的sdks中缺乏對那些無法在目標中取代的古代API的支持。抑制XCode 8中的2個特定新警告

我一直在XCode 7上編譯時沒有問題。今天我決定在XCode 8下編譯它。所有的目標都沒有錯誤地構建,並且看起來可以工作。但是,10.5目標生成以下兩個警告:

clang: warning: using sysroot for 'macosx' but targeting 'MacOSX' 
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9 

我想知道是否有辦法抑制這兩個警告。對於這個老的目標,我願意在發佈版本中解決對全部的警告,但顯然這並不理想。爲此,我嘗試添加

GCC_WARN_INHIBIT_ALL_WARNINGS = YES 

到我的配置文件,但它沒有壓制警告。 (雖然它確實稍微改變了他們的報道方式)。

在某些時候,我不得不放棄對Finale 2012和2014d的支持(就像我之前的所有版本)。但只要結果仍然有效,切斷它似乎爲時過早。我很想聽聽如何抑制這兩個警告的建議。

回答

1

對此的最新回答,但您可以通過將-Wno-deprecated標誌添加到鏈接器標誌來取消關於棄用的第二個警告(而不是禁止所有其他警告)。

+0

謝謝。我很高興發現這一點。它一直在困擾着我,但我與之共存。 – rpatters1

1

我找到了解決方案(各種)。

其中一個警告有一個很容易(如果迂腐)解決方案。

我的配置文件中引用的10.6 SDK是這樣的:

SDKROOT = $(DEVELOPER_SDK_DIR)/macosx10.6.sdk 

將其更改爲這樣:

SDKROOT = $(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk 

固定第一兩個警告。

其他警告可以通過抑制使用OTHER_LDFLAGS所有鏈接器警告抑制:

OTHER_LDFLAGS = -w 

但是,如果有誰知道一個辦法只能抑制特定警告,這將是非常有益的。