2012-12-10 21 views
6

के दौरान डिफ़ॉल्ट मान दें, तो आप कैसे परीक्षण कर सकते हैं कि कोई चर खाली है या qmake.pro फ़ाइल में परिभाषित नहीं है? मैं वैरिएबल परिभाषित नहीं होने पर डिफ़ॉल्ट मान सेट अप करने में सक्षम होना चाहता हूं।परीक्षण करें यदि कोई चर खाली है और qmake

मैं

eval("VARIABLE" = ""){ 
    VARIABLE = test 
} 

eval("VARIABLE" = ""){ 
    message(variable is empty) 
} 

कोशिश की, लेकिन मैं अभी भी संदेश "चर रिक्त है" मिलता है।

उत्तर

11

वहाँ पहले से ही समारोह isEmpty मैं स्पॉट नहीं किया है:

isEmpty(VARIABLE){ 
    VARIABLE = test 
}  
isEmpty(VARIABLE){ 
    message(variable is empty) 
} 

मुझे समझ में नहीं आता क्यों eval काम नहीं किया ...

+0

यह उद्धरण चिह्नों को पथ के लिए अक्षर के रूप में मानता है और उन्हें Qt 5.6 में भागने की कोशिश करता है। यदि आप घुंघराले-ब्रेसिज़ के साथ पथ और बाहर-बाईं ओर '$$' के पथ होने के इरादे से वेरिएबल को लपेटते हैं तो यह ब्रांड्स के समान ही काम करता है। –

-1

अगर परीक्षण एक स्ट्रिंग मान है,

eval("VARIABLE" = ""){ 
    VARIABLE = "test" 
} 

कोशिश करते हैं और अगर परीक्षण एक और परिवर्तनशील है, कोशिश

eval("VARIABLE" = ""){ 
    VARIABLE = $$test 
} 
+1

चर आमतौर पर $$ चर, नहीं "चर" के माध्यम से dereferenced कर रहे हैं। –

4

अपने खुद के जवाब की तरह कहते हैं, isEmpty(VARIABLE) आप क्या चाहते हैं करता है:

isEmpty(VARIABLE) { 
    ... 
} 

qmake भाषा एक ऑपरेटर (==) के बराबर होती है की कोई बराबर है, लेकिन आप इस तरह चीजों की तुलना कर सकते हैं:

equals(VARIABLE, foo) { 
    ... 
} 

आप यह भी जांच सकते हैं कि एक चर में एक नियमित अभिव्यक्ति का उपयोग करके एक चर शामिल है:

contains(VARIABLE, .*foo.*) { 
    ... 
} 

कारण eval() काम नहीं किया, यह के भीतर कथन निष्पादित करता है और कथन सफल होने पर सत्य लौटाता है।

तो ऐसा करने से:

eval(VARIABLE = "") { 
    ... 
} 

... आप बताए""VARIABLE को, चर खाली कर रहे हैं और ब्लॉक में प्रवेश वास्तव में हैं।

अधिक परीक्षण कार्यों के बारे में: qmake में http://qt-project.org/doc/qt-5/qmake-test-function-reference.html