在Qt项目中禁用-Wall编译器警告?

时间:2013-09-06 22:06:59

标签: c++ qt warnings qmake compiler-flags

我正在编译第三方库,并不关心修复库中存在的警告,但我不希望它们污染Qt Creator中的 Issues 窗格。

我已尝试遵循建议here,但在启用-Wall之后没有编译器标志可禁用-Wno-enum-compare

阅读this后,我尝试删除这样的标志:

CFLAGS -= -Wall

但这也不起作用。所以我尝试了this advice

QMAKE_CXXFLAGS_WARN_OFF -= -Wall

仍然没有。

所以我查看了生成的Makefile,发现了这个:

CFLAGS        = -pipe -g -fPIC -Wall -W -D_REENTRANT $(DEFINES)
CXXFLAGS      = -pipe -g -fPIC -Wall -W -D_REENTRANT $(DEFINES)

所以我尝试从这两个变量中删除标志:

CFLAGS -= -Wall
CXXFLAGS -= -Wall

仍然没有。你应该如何删除这个编译器标志?!

2 个答案:

答案 0 :(得分:24)

最简单的解决方案是:

CONFIG += warn_off

感谢评论中的peppe。

解释

这两个变量将-Wall标志插入Makefile

QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_ON

所以要删除-Wall,您需要将其从这两个中移除。

QMAKE_CFLAGS_WARN_ON -= -Wall
QMAKE_CXXFLAGS_WARN_ON -= -Wall

warn_off就是这么做的。

答案 1 :(得分:8)

正如“peppe”在评论中也指出的那样,根据以下文档,Qt'ish方式是这样的:CONFIG += warn_off/on

warn_on:编译器应输出尽可能多的警告。如果指定了warn_off,则忽略此项。

warn_off:编译器应输出尽可能少的警告。

CONFIG文档可在here中找到。

QMAKE_CXXFLAGS_WARN_OFF/ON变量不需要显式设置,因为它们由qmake处理。