如何将“warnings as error”规则添加到Qt .pro文件中?
问题描述:
当我通常在C++
项目上工作时,我所做的第一件事情之一是在我的编译器中设置“将警告视为错误”。如何将“warnings as error”规则添加到Qt .pro文件中?
使用Qt
时,qmake
会为您生成Makefile
,并且在编译命令中不包含此选项。我很确定有一种方法可以将这种选项(和其他)添加到生成的Makefile
中,但我无法弄清楚。
我该怎么做?
我使用Qt
的开源版本,g++
作为编译器。
答
上面的解决方案是唯一的GCC。 对于展台compillers(VS和gcc)使用:
win32-g++ {
QMAKE_CXXFLAGS += -Werror
}
win32-msvc*{
QMAKE_CXXFLAGS += /WX
}
答
有一个称为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++
和其他人不从已安装的头文件招致大量邮件。
非常感谢! ;) – ereOn 2010-06-10 14:24:08
链接死了,你能更新吗? – 2017-01-17 20:51:57