27

在我正在开发的软件项目中,我们使用了某些 3rd 方库,可悲的是,它们会产生烦人的 gcc 警告。我们正在努力清理所有警告代码,并希望在 GCC 中启用将警告视为错误 (-Werror) 标志。有没有办法让这些我们无法修复的第 3 方生成的警告消失?

4

4 回答 4

43

使用-isystem 示例:

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

使用 -isystem 没有关于提升的警告:D

于 2012-07-26T13:38:35.080 回答
18

我想您正在谈论来自 3rd 方库标题的警告。

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

#pragma GCC system_header
#include "real_3rd_party_header.h"

并使用包装器而不是原始的 3rd 方标头。

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

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

于 2010-07-22T12:15:05.850 回答
18

如果您使用的是 CMake,则可以通过添加以下内容SYSTEM来实现include_directories

include_directories(SYSTEM "${LIB_DIR}/Include")
                    ^^^^^^
于 2014-10-10T10:55:53.367 回答
3

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

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

于 2010-07-22T12:12:41.060 回答