我gcc可以在命令行上抛出一堆-Wsome-issue和标志,然后在末尾附近-Werror=other-issue用一个标志取消它们。-w
看来情况并非如此clang。尾随-w会抑制某些警告,但不会抑制其他警告。请参阅此处的示例。我知道我可以通过-Wno-some-issue和分别手动禁用每个警告-Wno-error=other-issue,但从长远来看,管理起来确实很痛苦。
我错过了什么吗?有没有办法取消所有早期的警告标志?是否有理由-w可以抑制某些警告而不抑制其他警告?
背景:我的具体用例是一个包含混合源文件的库。一些新的和一些古老的、半第三方的东西我们永远不想看,更不用说编辑了。该项目在全局范围内设置了一些半严格的警告标志,但对于这几个文件,我想覆盖全局标志并禁用所有警告和警告作为错误。在 CMake 中,这是通过设置COMPILE_OPTIONS这些文件的属性来完成的,该属性将给定的标志附加在全局标志之后。这样gcc效果很好,但事实clang证明这是一个令人头痛的问题。
(是的,我知道我可以重新组织项目以强制将这些文件编译到单独的目标中,但我希望避免这种情况。)
您需要的标志是-Wno-everything.
上帝螺栓: https: //godbolt.org/g/33uABD