使用gcc
我可以在命令行上抛出一堆-Wsome-issue
和-Werror=other-issue
标志,然后在靠近末尾的某个-w
标记处取消它们
clang
似乎不是这种情况。尾随-w
会抑制某些警告,但不会抑制其他警告。有关示例,请参阅here。我知道我可以通过-Wno-some-issue
和-Wno-error=other-issue
单独手动停用每个警告,但从长远来看这是一件非常痛苦的事情。
我错过了什么吗?有没有办法取消所有早期警告标志?有-w
可以抑制某些警告而不是其他警告的原因吗?
背景:我的具体用例是包含源文件混合的库。一些新的和一些古老的,半第三方的东西,我们永远不想触摸,更不用说看。该项目有一些全局设置的半严格警告标志,但对于这几个文件,我想覆盖全局标志并禁用所有警告和警告 - 作为错误。在CMake中,这是通过为这些文件设置COMPILE_OPTIONS
属性来完成的,该属性在全局标志之后附加给定的标志。使用gcc
这可以正常工作,但clang
证明这很令人头痛。
(是的,我知道我可以重新组织项目以强制将这些文件编译成一个单独的目标,但我希望避免这种情况。)