2012-01-10 18 views
32

क्या किसी को क्यूटी में डीबग-बिल्ड केवल कोड शामिल करने के लिए आधिकारिक रूप से समर्थित तरीका पता है? उदाहरण के लिए:क्या क्यूटी एक (गारंटीकृत) डीबग परिभाषा प्रदान करता है?

#ifdef QT_DEBUG 
// do something 
#endif 

मूल रूप से Q_ASSERT की तरह लेकिन अधिक जटिल परीक्षणों के लिए।

मुझे ऐसा कोई प्रलेखन नहीं मिल रहा है जो कहता है कि क्यूटी फ्रेमवर्क एक डीबग मैक्रो को परिभाषित करने की गारंटी देता है। यदि नहीं है, तो इस सुविधा प्रोजेक्ट को व्यापक रूप से कार्यान्वित करने के लिए एक समझदार अनौपचारिक तरीका क्या होगा?

उत्तर

39

क्यूटी रिलीज बिल्ड के लिए QT_NO_DEBUG परिभाषित करता है। अन्यथा QT_DEBUG परिभाषित किया गया है।

बेशक आप अपने .pro फ़ाइलों में DEFINES निर्दिष्ट करने के लिए स्वतंत्र हैं और उन्हें debug या release के लिए दायरा दें।

debug { 
    DEFINES += MYPREFIX_DEBUG 
} 
release { 
    DEFINES += MYPREFIX_RELEASE 
} 

तो फिर तुम क्यूटी आंतरिक परिभाषा पर निर्भर नहीं होगा:

+0

आप किसी भी सबूत के पता है कि 'QT_NO_DEBUG' आधिकारिक तौर पर क्यूटी ढांचे के बाहर उपयोग के लिए समर्थित है? –

+1

नहीं, बस स्रोत पढ़ रहा है। हालांकि यह असंभव है कि प्रकाशित एपीआई शीर्षकों में परिभाषाएं बहुत अच्छे कारण के बिना बदली गई हैं। – laalto

13

एक वैकल्पिक अपनी परियोजना फ़ाइल की तरह कुछ में लिखने के लिए है।

+0

एक अनुचित सुझाव नहीं है लेकिन मैं ** विशेष रूप से ** अतिरिक्त परिभाषाओं से बचने के लिए देख रहा था। –

+0

क्यों? अतिरिक्त परिभाषा में आप क्या नुकसान देखते हैं? – eSKon

4

जांच डिबग मोड के लिए:

#ifdef QT_DEBUG 
    //Some codes 
#endif 

जांच रिलीज़ मोड के लिए:

#ifndef QT_DEBUG //<== Please note... if not defined 
    //Some codes 
#endif 
संबंधित मुद्दे