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

Mic*_*ael 24 c++ gcc include suppress-warnings gcc-warning

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

Imm*_*lPC 39

使用-isystem 示例:

gcc -I./src/ -isystem /usr/include/boost/ -c file.c -o obj/file.o
Run Code Online (Sandbox Code Playgroud)

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

  • 这是一个比创建包装器更好的解决方案. (3认同)

Dum*_*001 16

我认为你在谈论来自第三方库标题的警告.

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

#pragma GCC system_header
#include "real_3rd_party_header.h"
Run Code Online (Sandbox Code Playgroud)

并使用包装器而不是原始的第三方标头.

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

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


Dre*_*kes 16

如果你正在使用CMake,你可以通过添加SYSTEMinclude_directories:

include_directories(SYSTEM "${LIB_DIR}/Include")
                    ^^^^^^
Run Code Online (Sandbox Code Playgroud)

  • 我在GCC上进行了测试,效果很好,但在MSVC下却无能为力。这并不奇怪,因为MSVC似乎没有指定系统头目录的任何方式(例如,GCC的-isystem),但是如果需要MSVC支持,则要记住一些注意事项。 (2认同)