2008-10-07 11 views
48

क्या कोई बता सकता है कि if-then कथन और मेकफ़ाइल में लूप के लिए कैसे उपयोग करें? मुझे उदाहरणों के साथ कोई अच्छा दस्तावेज नहीं मिल रहा है।मेकफ़ाइल अगर-फिर अन्य और लूप्स

+0

का उपयोग किए बिना लूप के लिए कैसे प्रदर्शन कर सकता है, मैं "सरल उदाहरणों के साथ" जोड़ता हूं। डॉक्यूमेनेशन ठीक है, लेकिन आदमी उदाहरण सार हैं! मेरे लिए, यह अभी भी एक वैध सवाल है। – Quickredfox

उत्तर

51

सशर्त फार्म

सरल

conditional-directive 
text-if-true 
endif 

मामूली जटिल

conditional-directive 
text-if-true 
else 
text-if-false 
endif 

अधिक जटिल

conditional-directive 
text-if-one-is-true 
else 
conditional-directive 
text-if-true 
else 
text-if-false 
endif 
endif 

सशर्त निर्देशों

तो समान सिंटेक्स

ifeq (arg1, arg2) 
ifeq 'arg1' 'arg2' 
ifeq "arg1" "arg2" 
ifeq "arg1" 'arg2' 
ifeq 'arg1' "arg2" 

तो नहीं के बराबर सिंटेक्स

ifneq (arg1, arg2) 
ifneq 'arg1' 'arg2' 
ifneq "arg1" "arg2" 
ifneq "arg1" 'arg2' 
ifneq 'arg1' "arg2" 

तो परिभाषित किया सिंटेक्स

ifdef variable-name 

तो निर्धारित नहीं सिंटेक्स

ifndef variable-name 

foreach समारोह

foreach समारोह सिंटेक्स

$(foreach var, list, text) 

foreach शब्दार्थ
"सूची" में प्रत्येक व्हाइटस्पेस से अलग शब्द, चर "वर" के नाम के लिए है कि शब्द के लिए सेट है और पाठ निष्पादित किया गया है।

7

क्या आपने GNU make documentation को आजमाया है? उदाहरण के साथ सशर्त के बारे में इसका एक पूरा खंड है।

13

यहाँ एक उदाहरण है, तो है:

ifeq ($(strip $(OS)),Linux) 
     PYTHON = /usr/bin/python 
     FIND = /usr/bin/find 
endif 

ध्यान दें कि यह चेतावनी देता है कि मेक के विभिन्न संस्करणों थोड़ा अलग वाक्य रचना, बहुत अच्छी तरह से प्रलेखित किया जा रहा है जिनमें से कोई भी राशि का एक शब्द भी साथ आता है।

+1

'$ (ओएस)' एक पूर्वनिर्धारित जीएनयू परिवर्तनीय बना है? यदि ऐसा है, तो हो सकता है कि आपको इसे [यहां] जोड़ना चाहिए (http://stackoverflow.com/q/714100/912144)। – Shahbaz

3

आप समय के बहुत सारे लूप के लिए देखते हैं, लेकिन आमतौर पर इसकी आवश्यकता नहीं होती है। यहां एक उदाहरण है कि कोई शेल

LIST_OF_THINGS_TO_DO = do_this do_that 
$(LIST_OF_THINGS_TO_DO): 
     run [email protected] > [email protected] 

SUBDIRS = snafu fubar 
$(SUBDIRS): 
    cd [email protected] && $(MAKE) 
संबंधित मुद्दे