2011-06-23 8 views
24

मैं जीएनयू फ़ाइल बनाने के if लूप में एकाधिक स्थितियों की जांच करना चाहता हूं। यहां एक उदाहरण दिया गया है:मेकफ़ाइल ifeq तार्किक और

ifeq ($(TEST_FLAG),TRUE && ($(DEBUG_FLAG),FALSE)) 
true statement 
else 
false statement 
endif 

ऐसा करने का सही तरीका क्या है?

उत्तर

25

आप अपने मूल्यों के एक संयोजन के साथ ifeq का उपयोग कर सकते हैं, उदाहरण के लिए।

ifeq ($(TEST_FLAG)$(DEBUG_FLAG),TRUEFALSE) 
    do something 
endif 

यह भी सशर्त काम करता है, जो और अधिक एक पाश में उपयोगी होने की संभावना है उपयोग करने के लिए (ifeq के रूप में संभव है कि आप एक पाश में उम्मीद करते हैं, यह वास्तव में एक बार परीक्षण किया जाएगा काम नहीं चलेगा) संभव है।

+0

मैं 'जांच _breaks_ TRUEFALSE' से पहले अग्रणी अंतरिक्ष लगता है और यह कभी काम करेंगे क्योंकि' ifeq' बहुत ही संवेदनशील है एक अग्रणी जगह के बारे में। क्या आप इसे देख सकते हैं और यदि मैं आपका जवाब सही संपादित कर रहा हूं? –

+0

@ एएलबंडी: अंतरिक्ष हटा दिया गया, धन्यवाद। – Hasturkun

19

हालांकि Hasturkun के समाधान के लिए काम करेंगे, मुझे लगता है कि यह लिखने के लिए मुहावरेदार रास्ता:

ifeq ($(TEST_FLAG),TRUE) 
ifeq ($(DEBUG_FLAG),FALSE) 
# Stuff 
endif 
endif 
+0

आपको अन्य भाग होना चाहिए, इसलिए झूठा कथन –

+0

निष्पादित करेगा I ifq के बाहर होने पर मुझे परेशानी होती है: 'ifeq() ... ifeq() ... endif else ... ifeq() ... endif .. endif'। मुझे त्रुटि 'अन्य' त्रुटि मिलती है। – NickSoft

+1

क्या होगा अगर मैं उपयोग करना चाहता हूं या? –