gpt4 book ai didi

gcc - 在每个目录的基础上抑制 GCC 警告

转载 作者:行者123 更新时间:2023-12-05 06:45:09 27 4
gpt4 key购买 nike

我正在处理一个 C/C++ 代码库,其中包含一些产生大量 GCC 警告的第 3 方源代码,我想隐藏这些警告。第三方代码无法修改或编译成库(由于构建系统的缺陷)。正在使用 -Werror 编译项目。

我如何要求 GCC 忽略部分代码库(包含在子目录中)中的所有警告,或者至少使这些警告不是致命的?

我知道标志 -isystem,但它对我不起作用,因为:

  • 它不会抑制源文件中的警告,只会抑制标题中的警告。
  • 它强制使用 C 链接,因此不能与 C++ header 一起使用。

GCC 版本为 4.7 或 4.8,构建由 make 提供支持。

最佳答案

GCC 不能直接帮助解决这个问题。正确的解决方法是调整您的构建系统(也许是递归 make)。

但是,您可以编写一个小的包装器脚本来扫描参数,并在找到正确的模式时去除 -Werror

例如

#!/bin/bash

newargs=()
werror=true
for arg; do
case "$arg" in
*directory-name-i-care-about* )
newargs=("${newargs[@]}" "$arg")
werror=false
;;
-Werror )
;;
* )
newargs=("${newargs[@]}" "$arg")
;;
esac
done

if $werror; then
newargs=("${newargs[@]}" "-Werror")
fi

exec gcc "${newargs[@]}"

然后,使用 CC=my-wrapper-script.sh 运行您的构建,您就完成了。您可以调用脚本 gcc 并将其放在路径中比真正的 gcc 更早的位置,但要注意在脚本末尾选择正确的“gcc”。

(我还没有真正测试过那个脚本,所以它可能有问题。)

关于gcc - 在每个目录的基础上抑制 GCC 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25567159/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com