2011-05-20 15 views
8

मैं पुराने मेकफ़ाइल को समानांतर करने की कोशिश कर रहा हूं।समांतर फ़ाइल में गंभीर खंड

असल में मुझे यह सुनिश्चित करने की ज़रूरत है कि संकलन प्रक्रिया शुरू होने से पहले कुछ जनरेटर स्क्रिप्ट को समानांतर नहीं कहा जाता है।

जेनरेटर को संकलन से पहले हमेशा बुलाया जाता है। मेकफ़ाइल में कुछ महत्वपूर्ण अनुभाग स्थापित करने का कोई तरीका है?

मेकफ़ाइल गन्दा है, मैं इसे यहां पोस्ट नहीं करना चाहता हूं।

+1

किस संस्करण का निर्माण? –

उत्तर

3

आप इस प्रकार का अलग Makefile में उत्पन्न फ़ाइलों के लिए नियमों को डाल सकता है, और ऐसा कुछ:

generated-sources : 
     $(MAKE) -f Makefile.Generators 

हालांकि, जीएनयू साथ करें, यह डिफ़ॉल्ट रूप से समानांतर किया जाएगा। आपको इसे दबाने की आवश्यकता होगी, और मैन्युअल बिल्कुल स्पष्ट नहीं है कि आप यह कैसे करेंगे। हो सकता है कि निम्नलिखित के कुछ संयोजन काम करेगा, जो बनाने के कार्यान्वयन आप का समर्थन करना चाहते हैं पर निर्भर करता है:

  • दर्रा -j1 झंडा:

    generated-sources : 
         $(MAKE) -j1 -f Makefile.Generators 
    
  • दबाने MAKEFLAGS विकल्प:

    generated-sources : 
         $(MAKE) -f Makefile.Generators MAKEFLAGS= 
    
  • Makefile.Generators में निम्न पंक्ति के साथ समांतर निष्पादन को दबाएं:

    .NOTPARALLEL : 
    
+0

.NOTPARALLEL विकल्प पर एक नोट: वह लक्ष्य निर्दिष्ट किसी भी पूर्व-रिकॉर्ड्स को अनदेखा कर देगा। इस लक्ष्य वाले किसी भी मेकफ़ाइल को सीरियल बिल्डिंग के लिए मजबूर किया जाएगा। इसलिए, आप उन सामानों को रख सकते हैं जिन्हें एक अलग मेकफ़ाइल में क्रमशः बनाने की आवश्यकता है और .NOTPARALLEL लक्ष्य जोड़ें। यह क्लीयरकेस बिल्ड टूल क्लेरमेक से अलग है जिसमें यह आपको लक्ष्यों का एक सेट निर्दिष्ट करने की अनुमति देता है जिसे समानांतर इमारत के पारस्परिक रूप से अनन्य w/सम्मान के रूप में माना जाएगा। –

2

आप एक नियम है कि स्क्रिप्ट के सभी चलाता कर सकते हैं, और उसके बाद सुनिश्चित करें कि आपके अन्य सभी नियमों का उस नियम पर निर्भर करते हैं।

all: ${SOURCES} scripts 

scripts: last_script 


first_script: 
    ./script1.sh 

second_script: first_script 
    ./script2.sh 

last_script: second_script 
    ./script3.sh 

source1.o: source1.c scripts 
    gcc source1.c -c -o source1.o 
+0

समस्या यह है कि इन स्क्रिप्ट को मेकफ़ाइल के अंदर से गुणों के साथ बुलाया जाता है, लेकिन यह सही दिशा है, धन्यवाद – Stasik

+0

क्या होगा यदि मेरे पास ऐसा कुछ है? – Stasik

+0

% .a:% .b ./script3.sh $ < – Stasik

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