2011-09-04 35 views
2

我正在編寫一個使用Boost的C++程序,並使用XCode 4.1作爲IDE和編譯器前端。我在各種Boost頭文件中收到了很多警告,並且我想禁用這些頭文件的所有警告(但仍然爲我自己的項目啓用它們)。有沒有簡單的方法來做到這一點?在XCode 4.1中禁用有關Boost標題的警告

Here's my search path settings

+0

不是一般前綴爲特定標頭集合及實例從他們。但是對於翻譯團隊中的部分,請參閱[這裏](http://stackoverflow.com/questions/965093/selectively-disable-gcc-warnings-for-only-part-of-a-translation-unit)。 –

+0

@Georg:我已經讀過這個問題,但是1.我沒有使用GCC; 2.我不想在每個.cpp文件中寫入多個'#pragma',只要包含一個Boost頭文件。如果可能的話,我想要一個更通用的解決方案。 –

+0

然後你用什麼編譯器? –

回答

3

我已經找到一個體面的解決辦法,依據是什麼@Georg Fritzsche也建議: 我已經添加了各種牽連boost頭文件的.PCH文件(預編譯頭),並纏他們一個#pragma push - #pragma pop塊,像這樣:

// We do not want to have warnings about Boost headers! 
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wconversion" 
#pragma GCC diagnostic ignored "-Wshadow" 

#include <boost/date_time/posix_time/posix_time_types.hpp> 
... 
#pragma GCC diagnostic pop 

這完美的作品,它不是爲具有#pragma包圍升壓頭在每個.cpp文件,因爲我擔心惱人。

+1

我已經將.pch文件添加到我的項目中,並且還啓用了預編譯頭文件,但我的警告消失了。我有同樣的問題,你有。我需要做其他事嗎?我已經包含了頭文件,它在.pch文件中給出了警告,但沒有運氣。 – Kobe

0

另一種解決方案是,我發現它可以在Xcode 5.x中工作(但它有望與Xcode 4一起使用)。 在生成設置了升壓的取決於代替Header Search Paths下設定這些標頭的路徑中目標,我把它寫Other C++ Flags下,通過-isystem

snapshot of the other C++ flags