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

Cor*_*ein 10 c++ qt warnings qmake compiler-flags

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

我已经尝试过遵循这里的建议,但是-Wall在启用后没有编译器标志可以禁用,例如-Wno-enum-compare.

看完这个,我试图消除标志,如下所示:

CFLAGS -= -Wall
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.所以我尝试了这个建议:

QMAKE_CXXFLAGS_WARN_OFF -= -Wall
Run Code Online (Sandbox Code Playgroud)

依然没有.

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

CFLAGS        = -pipe -g -fPIC -Wall -W -D_REENTRANT $(DEFINES)
CXXFLAGS      = -pipe -g -fPIC -Wall -W -D_REENTRANT $(DEFINES)
Run Code Online (Sandbox Code Playgroud)

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

CFLAGS -= -Wall
CXXFLAGS -= -Wall
Run Code Online (Sandbox Code Playgroud)

依然没有.你打算如何删除这个编译器标志?!

Cor*_*ein 24

最简单的解决方案是:

CONFIG += warn_off
Run Code Online (Sandbox Code Playgroud)

感谢佩佩的评论.

说明

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

QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_ON
Run Code Online (Sandbox Code Playgroud)

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

QMAKE_CFLAGS_WARN_ON -= -Wall
QMAKE_CXXFLAGS_WARN_ON -= -Wall
Run Code Online (Sandbox Code Playgroud)

warn_off 做到了那一点.

  • 非hackish方式可能是`CONFIG + = warn_off`.作为调试"这个变量/选项/来自哪里?"的一般方法,你可以运行`qmake -d`,`qmake -d -d`等; 这将为您提供许多有用的线索. (11认同)

lpa*_*app 8

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

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

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

CONFIG文档可以在这里找到.

QMAKE_CXXFLAGS_WARN_OFF/ON变量不需要被明确设置,因为它们是由qmake的处理.