2010-01-23 10 views
10

मेरा पहला प्रश्न (याय!) Gnumake और समानांतर बनाता है।gnumake और prerequisites के साथ समांतर इमारत

.PHONY: tool_1 tool_2 tool_3 tool_4 all tools 

all: | tools 

tools: | tool_2 tool_3 tool_4 

tool_1: 
    # commands for tool 1 

tool_2: | tool_1 
    # commands for tool 2 

tool_3: | tool_1 
    # commands for tool 3 

tool_4: | tool_1 
    # commands for tool 4 

अगर मैं इस आदमी पर make -j करते हैं, मैं क्या यहाँ यह सुनिश्चित करें कि tool_1 के लिए आदेशों ठीक एक बार क्रियान्वित कर रहे हैं सही है, और make से पहले की कोशिश करता tool_[234] के किसी भी निर्माण करने के लिए: यहाँ एक त्वरित उदाहरण फ़ाइल है?

क्या मैं के लिए देख रहा हूँ make -j कारण tool_1 पहले निर्मित किया जाना है, तो tool_[234] समानांतर में बनाया जा करने के लिए है, लेकिन tool_1 तीन बार के लिए आदेशों को क्रियान्वित करने के बिना। मुझे उम्मीद है कि इसका कोई अर्थ है। किसी भी सुझाव या विचारों के लिए धन्यवाद!

+0

ऐसा लगता है * ऐसा लगता है कि मैं इसे काम करना चाहता हूं, लेकिन इस समानांतर निर्माण सामग्री में सिस्टम लोड या मशीन से मशीन आदि के आधार पर व्यवहार बदलने का एक तरीका है। –

उत्तर

8

make -j वैसे ही व्यवहार करता है जैसा आप अपने प्रश्न में अपेक्षा करते हैं। यह कई बार निर्भरता नहीं बनाता है।

उस पाइप (|) चरित्र आपकी निर्भरता सूची में क्या करता है?

+10

ऑर्डर-केवल पूर्वापेक्षाएँ: http: // www.gnu.org/software/make/manual/make.html#Prerequisite- टाइप – Amro

+0

यह बहुत अच्छा है, धन्यवाद @ एलेक्स। मुझे प्रलेखन में कुछ भी नहीं मिला जो ठीक से आया और कहा। –

+0

मैंने सोचा कि मुझे पता था कि जीएनयू बहुत अच्छी तरह से बना है, लेकिन यह एक विशेषता थी जिसे मैंने याद किया था। – JesperE