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

时间:2016-03-31 07:04:34

标签: c++ gcc suppress-warnings

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

#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已启用我们的代码

1 个答案:

答案 0 :(得分:0)

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

补丁已添加到cmake build:

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