在我正在进行的软件项目中,我们使用了某些第三方库,遗憾的是,这些库产生了恼人的gcc警告。 我们正在努力清除所有警告代码,并希望在GCC中启用treat-warnings-as-errors(-Werror)标志。 有没有办法让这些我们无法修复的第三方生成的警告消失?
答案 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你的包装器 整个项目的其余部分。