2010-06-10 11 views
9

Quando di solito lavoro su un progetto C++, una delle prime cose che faccio è impostare "trattare gli avvisi come errori" sul mio compilatore.come aggiungere la regola "warnings as error" al file Qt .pro?

Quando si utilizza Qt, qmake genera per l'utente Makefile e non include questa opzione nei comandi di compilazione. Sono abbastanza sicuro che ci sia un modo per aggiungere una tale opzione (e altre) allo Makefile generato, ma non sono riuscito a capirlo.

Come faccio?

Sto usando la versione open source di Qt con g++ come compilatore.

risposta

9

È possibile utilizzare QMAKE_CXXFLAGS nel file di pro per specificare flag di compilazione:

QMAKE_CXXFLAGS += -Werror 
+0

Grazie mille! ;) – ereOn

+0

link dead, potresti aggiornarlo? –

4

La soluzione di cui sopra è solo per GCC. Per compillers stand (VS e gcc) utilizzare:

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

c'è una variabile denominata QMake QMAKE_CXXFLAGS_WARN_ON che è incluso in CXXFLAGS ogni volta CONFIG contiene warn_on.

così i file del mio progetto sono tutte dotate di un common.pri che 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}) 

La filter-out esiste per disattivare gli avvisi per i file meta-oggetto e risorse Qt-generati.

devo anche

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

che mi permette di attivare -Weffc++ ed altri senza incorrere in un sacco di messaggi dai file di intestazione installati.

Problemi correlati