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