2011-09-04 64 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