【问题标题】:Is it possible to get gcc to ignore unknown -W... command line options?是否可以让 gcc 忽略未知的 -W... 命令行选项?
【发布时间】:2011-12-11 05:53:42
【问题描述】:

我有一个构建配置,其中包含一些“-Wno”选项,旨在涵盖“gcc”和“clang”。问题是 gcc 无法识别某些特定于 clang 的部分,因此无法编译。

错误示例:

 error: unrecognized command line option "-Wno-self-assign"

有没有办法告诉 gcc 忽略它无法识别的命令行选项?

【问题讨论】:

    标签: gcc command-line-arguments


    【解决方案1】:

    原来有一个警告unknown-warning-Werror 成为错误。

    这可以通过以下方式禁用:

    -Wno-error=unknown-warning
    

    【讨论】:

    • 这不适用于 arm-linux-androideabi-g++ v4.6.3,它仍然给出“错误:无法识别的选项 '--dynamic-linker'”
    • 它可能只适用于通过编译器传递的项目。如果前端将选项传递给链接器,则链接器可能会抱怨。
    • echo 'int main(){return 42;}' | gcc -x c -Waaa -Wno-error=unknown-warning - 对我不起作用。
    • 在 gcc 4.1 上它只给出unrecognized command line option "-Wno-error=unknown-warning" :/
    • 确实,这是不正确的。 gcc 4.4 还提供cc1: error: -Werror=unknown-warning: No option -Wunknown-warning
    【解决方案2】:

    这是 gcc >= 4.4 的默认值,请参阅https://gcc.gnu.org/gcc-4.4/changes.html

    在 gcc 4.4 之前,这是不可能实现的。上面关于 -Wno-error=unknown-warning 的建议是不正确的,可能是由于误读了 gcc 手册(其中“unknown-warning”用作 gcc 无法识别的警告示例)。

    【讨论】:

    • 我现在没有时间重新测试,但“-Wno-error=unknown-warning”解决方案在我发布它时一直在为我工作。跨度>
    • 如果发现其他东西,这仍然会打印警告。好像没救了。
    • 使用 gcc (GCC) 7.3.0 和 -Werror,它会为无法识别的警告静音提供错误。例如 cc1plus: error: unrecognized command line option ‘-Wno-class-memaccess’ [-Werror]
    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 2017-09-14
    相关资源
    最近更新 更多