2010-06-10 11 views
9

Cuando suelo trabajar en un proyecto C++, una de las primeras cosas que hago es configurar el "aviso de advertencia como errores" en mi compilador.cómo agregar la regla de "advertencias como error" al archivo Qt .pro?

Al usar Qt, qmake genera el Makefile y no incluye esta opción en los comandos de compilación. Estoy bastante seguro de que hay una manera de agregar esa opción (y otras) en el Makefile generado, pero no pude resolverlo.

¿Cómo podría hacer eso?

Estoy usando la versión de código abierto de Qt con g++ como compilador.

Respuesta

9

Se puede utilizar en el archivo QMAKE_CXXFLAGS Pro para especificar opciones del compilador:

QMAKE_CXXFLAGS += -Werror 
+0

¡Muchas gracias! ;) – ereOn

+0

enlace muerto, ¿podrías actualizarlo? –

4

La solución anterior es sólo para GCC. Para compillers Booth (VS y gcc) usan:

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

hay una variable llamada QMake QMAKE_CXXFLAGS_WARN_ON que se incluye en CXXFLAGS siempre CONFIG contiene warn_on.

Así que mi proyecto todos los archivos incluyen un common.pri que contiene:

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}) 

El filter-out existe para desactivar las advertencias para los archivos de meta-objeto y de recursos generados en Qt.

también tienen

# 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)) $< 

que me permite habilitar -Weffc++ y otros sin incurrir en una gran cantidad de mensajes de archivos de cabecera instalados.

Cuestiones relacionadas