2010-06-10 10 views
9

Genellikle bir C++ projesinde çalışırken, ilk yaptığım şeylerden biri, derleyicimde "hataları uyarı olarak işleme" ayarlanmasıdır.Nasıl yapılır: "hata olarak uyarılar" kuralı Qt .pro dosyasına nasıl eklenir?

Qt, qmake kullanırken, Makefile sizin için üretir ve bu seçeneği derleme komutlarına dahil etmez. Bu tür bir seçenek (ve diğerleri) oluşturulan Makefile eklemek için bir yol olduğundan eminim ama bunu anlayamadım.

Bunu nasıl yaparım?

Qt'un açık kaynaklı sürümünü derleyici olarak g++ ile kullanıyorum.

cevap

9

Sen derleyici bayraklarını belirtmek için pro dosyasında QMAKE_CXXFLAGS kullanabilirsiniz:

QMAKE_CXXFLAGS += -Werror 
+0

Çok teşekkürler! ;) – ereOn

+0

link ölü, güncellemek ister misiniz? –

4

yukarıdaki çözüm yalnızca GCC içindir. stant compillers (VS ve gcc) için kullanın:

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

CONFIGwarn_on içeren her CXXFLAGS içine dahil edilir QMAKE_CXXFLAGS_WARN_ON adında bir QMake değişken vardır.

Yani benim proje tümünü içeren bir common.pri şunlardır dosyaları:

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 oluşturulan meta nesne ve kaynak dosyaları için uyarıları devre dışı bırakmak için vardır.

Ben de beni monte başlık dosyalarından çok sayıda mesaj ödemeden -Weffc++ ve başkalarını etkinleştirmek için izin verir

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

var.

İlgili konular