C++ 在Qt项目中禁用墙编译器警告?

C++ 在Qt项目中禁用墙编译器警告?,c++,qt,warnings,qmake,compiler-flags,C++,Qt,Warnings,Qmake,Compiler Flags,我正在编译一个第三方库,不想修复库中出现的警告,但我不希望它们污染Qt Creator中的问题窗格 我已尝试按照建议进行操作,但在启用-Wall后,没有编译器标志来禁用它,例如使用-Wno enum compare 阅读后,我尝试如下方式移除标志: CFLAGS -= -Wall 但这也不起作用。所以我试着: 还是没什么 因此,我查看了生成的Makefile,发现: CFLAGS = -pipe -g -fPIC -Wall -W -D_REENTRANT $(DEFINES)

我正在编译一个第三方库,不想修复库中出现的警告,但我不希望它们污染Qt Creator中的问题窗格

我已尝试按照建议进行操作,但在启用
-Wall
后,没有编译器标志来禁用它,例如使用
-Wno enum compare

阅读后,我尝试如下方式移除标志:

CFLAGS -= -Wall
但这也不起作用。所以我试着:

还是没什么

因此,我查看了生成的
Makefile
,发现:

CFLAGS        = -pipe -g -fPIC -Wall -W -D_REENTRANT $(DEFINES)
CXXFLAGS      = -pipe -g -fPIC -Wall -W -D_REENTRANT $(DEFINES)
因此,我尝试从这两个变量中删除标志:

CFLAGS -= -Wall
CXXFLAGS -= -Wall
QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_ON

还是没什么。你怎么删除这个编译器标志

最简单的解决方案是:

CONFIG += warn_off
感谢peppe的评论

解释
-Wall
标志通过以下两个变量插入
Makefile

CFLAGS -= -Wall
CXXFLAGS -= -Wall
QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_ON
因此,要删除
-Wall
,您需要从这两个变量中删除它

QMAKE_CFLAGS_WARN_ON -= -Wall
QMAKE_CXXFLAGS_WARN_ON -= -Wall
warn\u off
正是这样做的。

正如“peppe”在评论中所指出的那样,Qt'ish方式是根据下面的文档:
CONFIG+=warn\u off/on

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

warn\u off
:编译器应该输出尽可能少的警告

可以在中找到配置文档


QMAKE\u cxflags\u WARN\u OFF/ON
变量不需要显式设置,因为它们由QMAKE处理。

非黑客方式可能是
CONFIG+=WARN\u OFF
。作为调试“此变量/选项/…来自何处?”的一般方法,您可以运行
qmake-d
qmake-d-d
等。;这会给你很多有用的线索。@peppe真棒-谢谢。我完全没有意识到这一点!