我有一个使用
tinyxml2
库的项目。我有一个很长的编译器选项列表,其中列出了 -Werror=zero-as-null-pointer-constant
等。因此,在我包含 tinyxml2.h
的所有地方,我都会遇到错误:0 used as null pointer
,但是我的代码没有这样的问题。有没有办法禁用包含的某些编译器选项,因为我无法控制它们?
附注如果无法通过
gcc/clang
选项来完成,也许可以通过 cmake 来完成?或者我想知道这两种方式是否存在。
您可以将
tinyxml2
的包含目录标记为系统包含目录,这将抑制来自该目录的警告。
使用 GCC/Clang,您可以使用
-isystem
而不是 -I
来完成此操作,或者在 CMake 中添加包含目录时使用关键字 SYSTEM
来完成此操作。
比如说
include_directories(SYSTEM ${SOME_INCLUDE_DIR})
或者更好,
target_include_directories(myExe SYSTEM ${SOME_INCLUDE_DIR})