2009-04-22 13 views
6

मैं क्यूटी में लिखे गए एक सॉफ्टवेयर प्रोजेक्ट से जुड़ा हूं और लिनक्स पर क्यूमेक और जीसीसी के साथ बनाया गया हूं। हमें एक थर्ड-पार्टी लाइब्रेरी से लिंक करना है जो काफी कम गुणवत्ता वाली है और चेतावनियों की संख्या को बढ़ाता है। मैं अपने स्रोत कोड पर -W -Wall का उपयोग करना चाहता हूं, लेकिन कंसोल को शोर और अव्यवस्था से मुक्त रखने के लिए गंदा तृतीय-पक्ष लाइब्रेरी में पास करता हूं ताकि हम अपने कोड की गुणवत्ता पर ध्यान केंद्रित कर सकें।क्यूमेक/जीसीसी के साथ सशर्त रूप से चेतावनियां अक्षम करें?

qmake में, क्या कुछ फ़ाइलों और पुस्तकालयों में सशर्त रूप से CFLAGS/CXXFLAGS जोड़ने का कोई तरीका है?

उत्तर

5

जोनाथन, मुझे लगता है कि समस्या यह है कि आपकी स्रोत फ़ाइलों में तृतीय पक्ष पुस्तकालयों से हेडर फाइलें शामिल हैं, और आप उत्तरार्द्ध के लिए चेतावनियां बंद करना चाहते हैं।

केविन, मुझे लगता है कि आप चेतावनी को नियंत्रित करने के pragmas उपयोग कर सकते हैं: gcc diagnostic pragmas

आप इन से पहले और 3 पार्टी libs के लिए किसी भी #includes के बाद जोड़ सकते हैं।

+0

सही, चेतावनी तीसरे पक्ष के शीर्षकों से आती है। मैं प्रज्ञाओं को देखूंगा, लेकिन क्या कोई तरीका है कि मैं उन्हें केवल तृतीय पक्ष के शीर्षकों में इंजेक्ट कर सकता हूं, या क्या मुझे उनके शीर्षकों को संपादित करना होगा? –

+0

आप तीसरे पक्ष के शीर्षकों के लिए हेडर रैपर पेश कर सकते हैं। एक ब्रूट-फोर्स दृष्टिकोण किसी तीसरे पक्ष के शीर्षलेख के लिए किसी भी शीर्षलेख में शामिल करना होगा, फिर आपके ऐप में उस शीर्षलेख को शामिल किया जाएगा जहां आवश्यक हो। जैसे यदि आपकी ऐप लाइब्रेरी जेड का उपयोग करती है तो zed.h शीर्षलेख बनाएं जिसमें सभी ज़ेड हेडर शामिल हों। फिर आप zed.h में pragmas जोड़ सकते हैं। या बस अपने कोड के माध्यम से जाएं और प्रत्येक # शामिल pragmas के साथ। –

0

आम तौर पर, आप अपने कोड से एक अलग निर्देशिका में तीसरे पक्ष की लाइब्रेरी का निर्माण करेंगे, इसलिए इसके लिए आपके पास एक अलग मेकफ़ाइल होगा, ताकि आप उस संकलन के लिए झंडे का एक अलग सेट डाल सकें।

यदि आपने अपने कोड के साथ तीसरे पक्ष के पुस्तकालय कोड को मिश्रित किया है, तो आपने रखरखाव दुःस्वप्न के लिए स्वयं को स्थापित कर लिया है।

0

केविन,

qmake CONFIG+=debug QMAKE_CXXFLAGS_WARN_ON=-w QMAKE_CFLAGS_WARN_ON=-w 

क्या -isystem का उपयोग कर यदि आप अपने पुस्तकालय शामिल (उपयोग कॉन्फ़िग + = रिहाई यदि आप चाहें तो ...) करना चाहिए

3

प्रोजेक्ट फ़ाइल उदा .:

QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0 
0

मार्टिन के रूप में में

QMAKE_CXXFLAGS += -isystem ... 

के माध्यम से शामिल निर्देशिका को दबा सिर्फ संबंधित हेडर में चेतावनी जोड़ने लिखा था। आपकी प्रोजेक्ट की किसी भी स्रोत फ़ाइलों (या यहां तक ​​कि प्रोजेक्ट-वाइड) या #pragmas या wrappers फ़ाइलों के साथ गड़बड़ी के लिए चेतावनियों को अक्षम करने की आवश्यकता नहीं है।

ध्यान दें कि यदि आप QtCreator का उपयोग कर रहे हैं तो भी आप (यानी अतिरिक्त रूप से) INCLUDEPATH पर निर्देशिका जोड़ना चाहते हैं ताकि सूचकांक शीर्षलेख उठाए।

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