2010-06-10 76 views
9

当我通常在C++项目上工作时,我所做的第一件事情之一是在我的编译器中设置“将警告视为错误”。如何将“warnings as error”规则添加到Qt .pro文件中?

使用Qt时,qmake会为您生成Makefile,并且在编译命令中不包含此选项。我很确定有一种方法可以将这种选项(和其他)添加到生成的Makefile中,但我无法弄清楚。

我该怎么做?

我使用Qt的开源版本,g++作为编译器。

回答

9

您可以使用QMAKE_CXXFLAGS在Pro文件中指定编译器标志:

QMAKE_CXXFLAGS += -Werror 
+0

非常感谢! ;) – ereOn 2010-06-10 14:24:08

+0

链接死了,你能更新吗? – 2017-01-17 20:51:57

4

上面的解决方案是唯一的GCC。 对于展台compillers(VS和gcc)使用:

win32-g++ { 
    QMAKE_CXXFLAGS += -Werror 
} 
win32-msvc*{ 
    QMAKE_CXXFLAGS += /WX 
} 
0

有一个称为QMAKE_CXXFLAGS_WARN_ON一个qmake的变量,它包含到CXXFLAGS每当CONFIG包含warn_on

所以我的项目文件都包括一个common.pri其中包含:

CONFIG += warn_on 

dirty_build: CONFIG += noopt 

!dirty_build: WARNINGS += -Werror 

# Turn on warnings, except for code that is Qt-generated 
WARNINGS += -Wextra 
WARNINGS += -Wunknown-pragmas -Wundef 
WARNINGS += -Wold-style-cast 
WARNINGS += -Wdisabled-optimization -Wstrict-overflow=4 
WARNINGS += -Weffc++ -Wuseless-cast 
WARNINGS += -Winit-self -Wpointer-arith 
WARNINGS += -Wlogical-op 
WARNINGS += -Wunsafe-loop-optimizations -Wno-error=unsafe-loop-optimizations 
QMAKE_CXXFLAGS_WARN_ON += $(and $(filter-out moc_% qrc_%, [email protected]),$${WARNINGS}) 

filter-out存在禁用对Qt的生成元对象和资源文件的警告。

我也有

# Override the C and C++ targets to selectively replace -I with -isystem for include paths 
QMAKE_RUN_CC   = $(CC) -o $obj -c $(CFLAGS) $(subst -I/usr/include,-isystem /usr/include,$(INCPATH)) $src 
QMAKE_RUN_CC_IMP  = $(CC) -o [email protected] -c $(CFLAGS) $(subst -I/usr/include,-isystem /usr/include,$(INCPATH)) $< 
QMAKE_RUN_CXX   = $(CXX) -o $obj -c $(CXXFLAGS) $(subst -I/usr/include,-isystem /usr/include,$(INCPATH)) $src 
QMAKE_RUN_CXX_IMP  = $(CXX) -o [email protected] -c $(CXXFLAGS) $(subst -I/usr/include,-isystem /usr/include,$(INCPATH)) $< 

,让我能够-Weffc++和其他人不从已安装的头文件招致大量邮件。

相关问题