【问题标题】:Clang: Override all warning and warning-as-error flags specified earlier on the command lineClang:覆盖之前在命令行上指定的所有警告和警告错误标志
【发布时间】:2018-05-29 17:56:02
【问题描述】:

使用gcc,我可以在命令行上抛出一堆-Wsome-issue 和-Werror=other-issue 标志,然后在接近末尾的某个地方用一个-w 标志将它们全部取消。

clang 似乎不是这种情况。尾随 -w 会抑制一些警告,但不会抑制其他警告。有关示例,请参阅here。我知道我可以通过-Wno-some-issue 和-Wno-error=other-issue 单独手动禁用每个警告,但从长远来看,这确实很痛苦。

我错过了什么吗?有没有办法取消所有早期的警告标志? -w 可以禁止某些警告但不能禁止其他警告有什么原因吗?

背景:我的具体用例是一个包含混合源文件的库。一些新的和一些古老的、半第三方的东西,我们永远不想看,更不用说编辑了。该项目全局设置了一些半严格的警告标志,但是对于这几个文件,我想覆盖全局标志并禁用所有警告和警告作为 werrors。在 CMake 中,这是通过为这些文件设置 COMPILE_OPTIONS 属性来完成的,该属性将给定的标志附加在全局标志之后。使用gcc 可以正常工作,但使用clang 会让人头疼。

(是的,我知道我可以重组项目以强制将这些文件编译到单独的目标中,但我希望避免这种情况。)

【问题讨论】:

    标签: c++ c clang


    【解决方案1】:

    您需要的标志是-Wno-everything。

    天箭:https://godbolt.org/g/33uABD

    【讨论】:

    • 谢谢!我不会说这很明显,但它确实有道理。谷歌搜索“Wno-everything”显示的结果很少,所以我想这不是一个广为人知的技巧。希望其他人将来能在这里结束。
    猜你喜欢
    • 2023-03-29
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2021-04-16
    • 2013-03-08
    • 1970-01-01
    相关资源
    最近更新 更多