11

我正在编译一个 3rd 方库,并不关心修复库中存在的警告,但我不希望它们污染 Qt Creator 中的“问题”窗格。

我尝试按照此处的建议进行操作,但是在启用后没有编译器标志可以禁用-Wall,例如 with -Wno-enum-compare

阅读内容后,我尝试像这样删除标志:

CFLAGS -= -Wall

但这也没有用。所以我尝试了这个建议

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

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

4

2 回答 2

25

最简单的解决方案是:

CONFIG += warn_off

感谢评论中的佩佩。

解释

标志被这两个变量-Wall插入到:Makefile

QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_ON

因此,要删除-Wall,您需要从这两个变量中删除它。

QMAKE_CFLAGS_WARN_ON -= -Wall
QMAKE_CXXFLAGS_WARN_ON -= -Wall

warn_off就是这样做的。

于 2013-09-06T22:06:58.883 回答
8

正如评论中还提到的“peppe”,根据以下文档,Qt'ish 方式是这样的:CONFIG += warn_off/on

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

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

可以在此处找到 CONFIG 文档。

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

于 2013-09-06T22:58:03.663 回答