如何在GCC中消除外部lib /第三方警告

时间:2010-07-22 11:56:01

标签: c++ gcc include suppress-warnings gcc-warning

在我正在进行的软件项目中,我们使用了某些第三方库,遗憾的是,这些库产生了恼人的gcc警告。 我们正在努力清除所有警告代码,并希望在GCC中启用treat-warnings-as-errors(-Werror)标志。 有没有办法让这些我们无法修复的第三方生成的警告消失?

4 个答案:

答案 0 :(得分:37)

使用 -isystem 例如:

gcc -I./src/ -isystem /usr/include/boost/ -c file.c -o obj/file.o

使用-isystem NO警告有关提升:D

答案 1 :(得分:14)

我认为您正在谈论来自第三方库标题的警告。

GCC特定的解决方案是创建另一个包装头文件,该文件基本上包含两行:

#pragma GCC system_header
#include "real_3rd_party_header.h"

使用包装器而不是原来的第三方标题。

检查another SO response详细说明编译指示。它基本上告诉GCC这个(带有递归包含的文件)是一个系统头,不应该生成任何警告消息。

否则,我不知道如何禁用来自第三方代码的警告。当然,除了蛮力之外:在构建系统中配置要构建的文件并关闭警告。

答案 2 :(得分:14)

如果您正在使用CMake,则可以通过将SYSTEM添加到include_directories来实现此目的:

include_directories(SYSTEM "${LIB_DIR}/Include")
                    ^^^^^^

答案 3 :(得分:3)

http://www.artima.com/cppsource/codestandards.html

  

示例1:第三方头文件。   您不能的库头文件   更改可能包含一个构造   导致(可能是良性的)警告。   然后用自己的文件包装文件   #include原文的版本   标题并选择性地关闭   仅针对该范围的嘈杂警告,   然后#include你的包装器   整个项目的其余部分。