2010-06-10 6 views
9

जब मैं आमतौर पर C++ प्रोजेक्ट पर काम करता हूं, तो मेरी पहली चीज में से एक मेरे कंपाइलर पर "त्रुटियों के रूप में चेतावनी" की स्थापना कर रहा है।Qt .pro फ़ाइल पर "त्रुटि के रूप में चेतावनियां" नियम जोड़ने के लिए कैसे?

Qt का उपयोग करते समय, qmake आपके लिए Makefile उत्पन्न करता है और संकलन आदेशों पर यह विकल्प शामिल नहीं करता है। मुझे पूरा यकीन है कि उत्पन्न Makefile में ऐसे विकल्प (और अन्य) को जोड़ने का एक तरीका है लेकिन मैं इसे समझ नहीं पाया।

मैं यह कैसे करूँगा?

मैं संकलक के रूप में g++ के साथ Qt के ओपन-सोर्स संस्करण का उपयोग कर रहा हूं।

उत्तर

9

आप संकलक झंडे निर्दिष्ट करने के लिए समर्थक फ़ाइल में QMAKE_CXXFLAGS उपयोग कर सकते हैं:

QMAKE_CXXFLAGS += -Werror 
+0

बहुत धन्यवाद! ;) – ereOn

+0

लिंक मृत, क्या आप इसे अपडेट कर सकते हैं? –

4

ऊपर समाधान केवल जीसीसी के लिए है। बूथ Compillers (वी.एस. और जीसीसी) के लिए उपयोग करें:

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

एक qmake चर QMAKE_CXXFLAGS_WARN_ON कहा जाता है जो CXXFLAGS में शामिल किया गया है, जब भी CONFIGwarn_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 क्यूटी-उत्पन्न मेटा-वस्तु और संसाधन फ़ाइलों के लिए चेतावनी निष्क्रिय करने के लिए मौजूद है।

मैं भी

# 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++ और दूसरों को सक्षम करने के लिए अनुमति देता है कि है।

संबंधित मुद्दे