Reputation: 9448
With gcc
I can throw a bunch of -Wsome-issue
and -Werror=other-issue
flags on the command line and the later cancel them all with a single -w
flag somewhere near the end.
This doesn't appear to be the case with clang
. A trailing -w
suppresses some warnings, but not others. See here for an example. I know I can manually disable each warning individually via -Wno-some-issue
and -Wno-error=other-issue
, but that's a real pain to manage in the long term.
Am I missing something? Is there a way to cancel all earlier warning flags? Is there a reason why -w
can suppress some warnings but not others?
Background: My specific use case is a library containing a mix of source files. Some new and some ancient, semi-third-party stuff that we never want to look at, let alone edit. The project has some semi-strict warning flags set globally, but for these few files I'd like to override the global flags and disable all warnings and warnings-as-werrors. In CMake this is done by settings the COMPILE_OPTIONS
property for those files, which appends the given flags after the global flags. With gcc
this works just fine, but with clang
it's proving to be a headache.
(And yes I know I could reorganise the project to force those files to be compiled into a separate target, but I was hoping to avoid that.)
Upvotes: 3
Views: 2520
Reputation: 18661
The flag you need is -Wno-everything
.
Godbolt: https://godbolt.org/g/33uABD
Upvotes: 5