2012-07-30 27 views
17

पर डीबग बिल्ड चला रहा है या नहीं, मैं रनटाइम पर QObject के भीतर से कैसे पता लगा सकता हूं कि क्यूटी के साथ जुड़ा हुआ क्यूटी डिबग बिल्ड या रिलीज बिल्ड है या नहीं?पता लगाएं कि qt रनटाइम

मुझे QT_NO_DEBUG macro के बारे में पता है, लेकिन यह Qt के निर्माण समय पर हल हो गया है।

उदाहरण 1 जब यह उपयोगी होगा: मेरे पास एक प्लगइन है जो एक क्रैश हैंडलर के रूप में कार्य करता है, जो बैकट्रैस प्रदान करता है। क्यूटी डीबग प्रतीकों उपलब्ध होने पर मैं केवल यह प्लगइन इस काम को करने का प्रयास करना चाहता हूं।

उदाहरण 2: मेरे पास pyqt में एक कमांड लाइन तर्क पार्सर लिखा गया है। यह प्रोग्राम सहायता मुद्रित करना चाहता है। यह कैसे पता लगाता है कि QApplication -sync स्विच का समर्थन करेगा या pyqt के भीतर से नहीं। अगर मेरे पास बिल्ड प्रकार पर जानकारी थी, तो मैं प्रोग्राम को समझने वाले तर्कों की सूची से आसानी से जोड़ सकता हूं या हटा सकता हूं।

#ifdef QT_DEBUG 
    qDebug() << "Running a debug build"; 
#else 
    qDebug() << "Running a release build"; 
#endif 

हालांकि इस स्पष्ट रूप से नहीं बल्कि रनटाइम पर जाँच से, पूर्व प्रोसेसर का उपयोग करता है:

+0

क्या आप जानना चाहते हैं कि क्यूटी पुस्तकालय डीबग या रिलीज हैं या आप जानना चाहते हैं कि आपका एप्लिकेशन डीबग या रिलीज़ में संकलित है या नहीं? –

+0

क्यूटी पुस्तकालय। –

उत्तर

30

आप केवल आपके आपके आवेदन की एक डिबग या रिहाई का निर्माण चल रहे हैं कि क्या परीक्षण करना चाहते हैं, QT_DEBUG का उपयोग करें। मैं थोड़ा उलझन में हूं कि आपने यह निर्दिष्ट क्यों किया है कि आप रनटाइम पर यह चेक बनाना चाहते हैं, क्योंकि डीबग क्षमता के साथ या बिना निर्माण के निर्णय को केवल संकलन से पहले बनाया जा सकता है ...

I ' मुझे क्यूटी 4 में किसी भी आसान तरीके से पता नहीं है कि आप जिस क्यूटी लाइब्रेरी के खिलाफ लिंक कर रहे हैं, उसे डीबगिंग सक्षम के साथ बनाया गया है (हालांकि मैंने देखा है कि यह QLibraryInfo::isDebugBuild() के अतिरिक्त Qt5 में बदल रहा है)।

+0

प्रश्न के लिए स्पष्टीकरण जोड़ा गया। –

+2

मैक्रोज़ के लिए नहीं, बल्कि QLibraryInfo tidbit के लिए, अपना उत्तर स्वीकार कर रहा है। ऐसा प्रतीत होता है कि मैं पूछे जाने वाले कई प्रश्न Qt5 के साथ हल किए गए हैं, जिनमें से एक भी शामिल है। मैं स्वीकार करूंगा कि Qt4 के लिए कोई उचित समाधान नहीं है। –

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