मैंने मेकफाइल्स से संबंधित कुछ ट्यूटोरियल पढ़े लेकिन मेरे लिए यह अभी भी स्पष्ट नहीं है कि लक्ष्य "सभी" का क्या अर्थ है और यह क्या करता है।
कोई विचार?
मैंने मेकफाइल्स से संबंधित कुछ ट्यूटोरियल पढ़े लेकिन मेरे लिए यह अभी भी स्पष्ट नहीं है कि लक्ष्य "सभी" का क्या अर्थ है और यह क्या करता है।
कोई विचार?
जवाबों:
एक निर्माण, जैसा कि मेकफाइल इसे समझता है, इसमें बहुत सारे लक्ष्य होते हैं। उदाहरण के लिए, एक परियोजना बनाने के लिए जिसकी आपको आवश्यकता हो सकती है
यदि आपने इस वर्कफ़्लो को मेकफाइल के साथ लागू किया है, तो आप प्रत्येक लक्ष्य को अलग से बना सकते हैं। उदाहरण के लिए, यदि आपने लिखा है
make file1.o
यदि आवश्यक हो तो यह केवल उस फ़ाइल का निर्माण करेगा।
का नाम allतय नहीं है। यह सिर्फ एक पारंपरिक नाम है; allलक्ष्य यह दर्शाता है कि यदि आप इसे लागू करते हैं, तो एक पूर्ण निर्माण करने के लिए सभी चीजों का निर्माण करना होगा । यह आमतौर पर एक डमी लक्ष्य होता है, जो किसी भी फाइल को नहीं बनाता है, लेकिन केवल अन्य फाइलों पर निर्भर करता है। ऊपर दिए गए उदाहरण के लिए, सभी आवश्यक निर्माण निष्पादनयोग्य निर्माण कर रहे हैं, अन्य फाइलें निर्भरता के रूप में खींची जा रही हैं। तो मेकफाइल में ऐसा दिखता है:
all: executable1 executable2
allलक्ष्य आम तौर पर मेकफाइल में पहला होता है, क्योंकि यदि आप केवल makeकमांड लाइन में लिखते हैं , तो लक्ष्य को निर्दिष्ट किए बिना, यह पहला लक्ष्य बनाएगा। और आप इसे होने की उम्मीद करते हैं all।
allआमतौर पर एक .PHONYलक्ष्य भी है । यहाँ और जानें ।
जीएनयू मेक के लिए मैनुअल मानक लक्ष्यों कीall अपनी सूची के लिए एक स्पष्ट परिभाषा देता है ।
अगर मेकफाइल का लेखक उस सम्मेलन का अनुसरण कर रहा है, तो लक्ष्य allहोना चाहिए:
makeकरना चाहिए make all।1 प्राप्त करने के लिए allआम तौर पर एक .PHONYलक्ष्य के रूप में परिभाषित किया जाता है जो निष्पादन योग्य (ओं) पर निर्भर करता है जो पूरे कार्यक्रम को बनाते हैं:
.PHONY : all
all : executable
2 प्राप्त करने के लिए allया तो मेक फ़ाइल में परिभाषित पहला लक्ष्य होना चाहिए या डिफ़ॉल्ट लक्ष्य के रूप में सौंपा जाना चाहिए:
.DEFAULT_GOAL := all
यकीन नहीं होता कि यह किसी खास चीज के लिए है। यह केवल एक सम्मलेन है जिसे आप 'सभी' नियम की आपूर्ति करते हैं, और आम तौर पर इसका उपयोग पूरे प्रोजेक्ट को बनाने के लिए आवश्यक सभी उप-लक्ष्यों को सूचीबद्ध करने के लिए किया जाता है, इसलिए 'सभी' नाम। इसके बारे में एकमात्र खास बात यह है कि अक्सर लोग इसे मेकफाइल में पहले लक्ष्य के रूप में डालते हैं, जिसका अर्थ है कि केवल 'मेक' टाइप करने से वही काम होगा जो 'मेक ऑल' होगा।
लक्ष्य "ऑल" एक डमी लक्ष्य का एक उदाहरण है - "ऑल" नामक डिस्क पर कुछ भी नहीं है। इसका मतलब यह है कि जब आप "सभी बनाते हैं", हमेशा सोचते हैं कि इसे बनाने की आवश्यकता है, और इसलिए उस लक्ष्य के लिए सभी कमांड निष्पादित करते हैं। वे कमांड आमतौर पर ऐसे होंगे जो उन सभी अंत-उत्पादों का निर्माण करते हैं जिनके बारे में मेकफाइल जानता है, लेकिन यह कुछ भी कर सकता है।
डमी लक्ष्य के अन्य उदाहरण "साफ" और "इंस्टॉल" हैं, और वे उसी तरह से काम करते हैं।
यदि आपने इसे अभी तक नहीं पढ़ा है, तो आपको जीएनयू मेक मैनुअल पढ़ना चाहिए , जो एक उत्कृष्ट ट्यूटोरियल भी है।