繁体   English   中英

gcc:从c ++代码中禁止[默认启用]警告

[英]gcc: suppress [enabled by default] warning from c++ code

我们使用gcc和-Wall -Werror选项构建我们的项目。 来自外部标头的警告被pragma抑制,如下所示:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#include <somelib/component/settings.h>
#pragma GCC diagnostic pop

在将外部版本升级到新版本之后,我们获得了新类型的警告来抑制:

error: inline function ‘...’ given attribute noinline [-Werror]

或者没有-Werror警告:

warning: inline function ‘...’ given attribute noinline [enabled by default]

似乎没有办法忽略它通过#pragma GCC诊断被忽略。

在这种情况下,在以下条件下可以做些什么?

  1. 无法修改外部标头。 在构建时修补本地副本作为最后的手段是可以接受的。
  2. 有问题的标题被广泛使用。
  3. -Werror已启用我们的代码

最后,我们选择在构建时进行修补。 它有点hacky但它​​允许我们的项目完好无损。

补丁已添加到cmake构建中:

execute_process(COMMAND "patch" "-N" "header_to_patch.h" "header_to_patch.h.patch")

补丁文件准备了:

diff -u "original/header_to_patch.h" "fixed/header_to_patch.h" > header_to_patch.h.patch

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM