我正在处理一个C / C ++代码库,其中包含一些产生大量GCC警告的第三方源,我想隐藏这些警告。第3方代码无法修改或编译到库中(由于构建系统的缺点)。该项目正在编译-Werror
。
如何让GCC忽略部分代码库中的所有警告(包含在子目录中),或者至少使这些警告不致命?
我知道标志-isystem
,但它对我不起作用,因为:
GCC版本为4.7或4.8,版本为make
供电。
答案 0 :(得分:1)
GCC无法直接帮助解决这个问题。正确的解决方法是调整构建系统(也许是递归make)。
但是,你可以编写一个扫描参数的小包装脚本,如果找到正确的模式则剥离-Werror
。
E.g。
#!/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"在剧本的最后。
(我实际上没有测试过那个脚本,所以它可能是错误的。)