【发布时间】: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 会让人头疼。
(是的,我知道我可以重组项目以强制将这些文件编译到单独的目标中,但我希望避免这种情况。)
【问题讨论】: