如何抑制包含的警告?

时间:2017-09-24 08:39:08

标签: c++ cmake

我有一个使用tinyxml2库的项目。我有很长的编译器选项列表,-Werror=zero-as-null-pointer-constant列在其中。因此,无论我在哪里添加tinyxml2.h我都有错误:0 used as null pointer,但我的代码没有这样的问题。有没有办法禁用包含的某些编译器选项,因为我无法控制它们?

P.S。如果无法通过gcc/clang选项进行,也许可以通过cmake进行?或者我想知道两种方式是否存在。

2 个答案:

答案 0 :(得分:1)

您可以将tinyxml2的include目录标记为系统包含目录,该目录将禁止来自那里的警告。

使用GCC / Clang,您可以使用-isystem而不是-I执行此操作,或者在CMake中添加包含目录时使用关键字SYSTEM

例如

include_directories(SYSTEM ${SOME_INCLUDE_DIR})

或者更好,

target_include_directories(myExe SYSTEM ${SOME_INCLUDE_DIR}) 

答案 1 :(得分:0)

您可以使用抑制编译指示。

这支持GCC和VC ++编译器,它看起来像这样:

#pragma warning(push)
#pragma warning(disable : 4244)
#pragma warning(disable : 4127)
#pragma warning(disable : 4512)
#include <boost/python.hpp>
#pragma warning(pop)

以下是详细规格: