2013-02-04 22 views
7

मैंने क्यूटी 5 डाउनलोड किया है और मेरी परियोजना बनाने की कोशिश की है। परियोजनाओं अब क्यूटी चर करने के लिए विजेट जोड़ने के लिए आवश्यक है, लेकिन है कि पुराने संस्करण के साथ एक चेतावनी का उत्पादन:qmake संख्यात्मक परिवर्तनीय तुलना

परियोजना संदेश: चेतावनी: अज्ञात क्यूटी: विगेट्स

सरल समाधान एक सरल जांच जोड़ने के लिए लग रहे हैं :

equals($$QT_MAJOR_VERSION, 5) { 
    message(" ================ QT 5 ================ ") 
    QT += widgets 
} else { 
    message(" ================ QT 4 ================ ") 
} 

यह काम नहीं किया (QT 4 मुद्रित है)। यह सच है कि बराबर qmake function reference का हिस्सा नहीं है, लेकिन इसमें शामिल है। तो इसके साथ प्रयास किया गया:

contains($$QT_MAJOR_VERSION, 5) { 
    message(" ================ QT 5 ================ ") 
    QT += widgets 
} else { 
    message(" ================ QT 4 ================ ") 
} 

लेकिन यह काम नहीं किया, या तो। इसमें कई अन्य संयोजन शामिल हैं ("$$ QT_MAJOR_VERSION", "5") काम नहीं करते हैं। एक स्थानीय चर और इस तरह से काम नहीं करता है में अपने मूल्य के लिए परीक्षण की स्थापना

message($$QT_MAJOR_VERSION) 

:

धारणा है कि $$ QT_MAJOR_VERSION 4 या 5 है की तरह एक लाइन के साथ चेक किया गया है।

इन सभी के लिए निष्कर्ष यह है कि मुझे qmake तंत्र के बारे में कुछ मौलिक समझ में नहीं आता है। तो qmake .pro फ़ाइल में किसी मान के विरुद्ध एक चर की तुलना कैसे करता है?

उत्तर

10

आप उपयोग कर सकते हैं:

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 
5

इसके अलावा क्या Zlatomir कहा, greaterThan एक सख्त तुलना है ("अधिक से अधिक और अधिक से बराबर" नहीं)। आप संख्यात्मक समानता के परीक्षण के लिए isEqual(QT_MAJOR_VERSION, 5) का भी उपयोग कर सकते हैं।

ध्यान दें कि आपको , QT_MINOR_VERSION और QT_PATCH_VERSION के लिए $$ निर्दिष्ट नहीं करना चाहिए।

3

ऐसा लगता है कि

equals (QT_MAJOR_VERSION, 4) 
{ 
    //some conditional stuff 
} 

काम नहीं करता है, लेकिन

equals (QT_MAJOR_VERSION, 4) { 
    //some conditional stuff 
} 

काम करता है ... यह उद्घाटन ब्रेस की स्थिति के प्रति संवेदनशील है! Wierd