बनाना - लिनक्स कमांड - यूनिक्स कमांड

बनाना - जीएनयू कार्यक्रमों के समूहों को बनाए रखने के लिए उपयोगिता बनाते हैं

सार

[ -f मेकफ़ाइल ] [विकल्प] ... लक्ष्य बनाएं ...

चेतावनी

यह पृष्ठ जीएनयू बनाने के दस्तावेज़ीकरण का एक निकास है। इसे कभी-कभी अपडेट किया जाता है क्योंकि जीएनयू प्रोजेक्ट नॉरऑफ का उपयोग नहीं करता है। पूर्ण, वर्तमान दस्तावेज़ के लिए, Info file make.info देखें जो Texinfo स्रोत फ़ाइल make.texinfo से बना है।

विवरण

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

बनाने के लिए तैयार करने के लिए , आपको मेकफ़ाइल नामक एक फ़ाइल लिखनी होगी जो आपके प्रोग्राम में फ़ाइलों के बीच संबंधों का वर्णन करती है, और राज्य प्रत्येक फ़ाइल को अपडेट करने के लिए आदेशों का वर्णन करता है। किसी प्रोग्राम में, आमतौर पर निष्पादन योग्य फ़ाइल ऑब्जेक्ट फ़ाइलों से अपडेट की जाती है, जो बदले में स्रोत फ़ाइलों को संकलित करके बनाई जाती हैं।

एक बार उपयुक्त मेकफ़ाइल मौजूद हो जाने पर, प्रत्येक बार जब आप कुछ स्रोत फ़ाइलों को बदलते हैं, तो यह सरल खोल कमांड:

बनाना

सभी आवश्यक recompilations प्रदर्शन करने के लिए पर्याप्त है। मेक प्रोग्राम फाइलों के मेकफ़ाइल डेटा बेस और अंतिम-संशोधित समय का उपयोग यह तय करने के लिए करता है कि कौन सी फाइलों को अपडेट करने की आवश्यकता है। उन फ़ाइलों में से प्रत्येक के लिए, यह डेटाबेस में दर्ज कमांड को जारी करता है।

मेकफ़ाइल में एक या अधिक लक्ष्य नाम अपडेट करने के लिए कमांड निष्पादित करें, जहां नाम आम तौर पर एक प्रोग्राम होता है। यदि नो- एफ विकल्प मौजूद है, तो उस क्रम में मेकफ़ाइल GNUmakefile , मेकफ़ाइल और मेकफ़ाइल बनाने के लिए देखेंगे

आम तौर पर आपको अपनी मेकफ़ाइल या तो मेकफ़ाइल या मेकफ़ाइल कॉल करना चाहिए। (हम मेकफ़ाइल की अनुशंसा करते हैं क्योंकि यह निर्देशिका सूची की शुरुआत के करीब प्रमुख रूप से प्रतीत होता है, रीडमे जैसी अन्य महत्वपूर्ण फ़ाइलों के ठीक सामने ।) पहले नाम की जांच की गई, जीएनयूमेकफाइल , अधिकांश मेकफ़ाइल के लिए अनुशंसित नहीं है। यदि आपके पास जीएनयू बनाने के लिए विशिष्ट मेकफ़ाइल है, तो आपको इस नाम का उपयोग करना चाहिए, और बनाने के अन्य संस्करणों द्वारा समझा नहीं जाएगा। यदि मेकफ़ाइल `- 'है, तो मानक इनपुट पढ़ा जाता है।

अपडेट को एक लक्ष्य बनाएं यदि यह पूर्व-संशोधित फ़ाइलों पर निर्भर करता है जिन्हें संशोधित किया गया है क्योंकि लक्ष्य को अंतिम बार संशोधित किया गया था, या यदि लक्ष्य मौजूद नहीं है।

विकल्प

बी

-m

इन विकल्पों को बनाने के अन्य संस्करणों के साथ संगतता के लिए अनदेखा किया जाता है।

-सी डीआईआर

मेकफ़ाइल पढ़ने या कुछ और करने से पहले निर्देशिका डीआईआर में बदलें। यदि एकाधिक- सी विकल्प निर्दिष्ट किए जाते हैं, तो प्रत्येक को पिछले एक के सापेक्ष व्याख्या किया जाता है: -C / -C आदि -C / etc के बराबर है। यह आम तौर पर बनाने के पुनरावर्ती आमंत्रण के साथ प्रयोग किया जाता है।

-d

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

-e

मेकफ़ाइल से चर पर पर्यावरण प्राथमिकता से लिया गया चर दें।

-फ फाइल

मेकफ़ाइल के रूप में फ़ाइल का उपयोग करें।

-मैं

फ़ाइलों को रीमेक करने के लिए निष्पादित आदेशों में सभी त्रुटियों को अनदेखा करें।

-मैं

शामिल मेकफ़ाइल खोजने के लिए एक निर्देशिका डीआईआर निर्दिष्ट करता है। यदि कई-I विकल्पों का उपयोग कई निर्देशिकाओं को निर्दिष्ट करने के लिए किया जाता है, तो निर्देशिका निर्दिष्ट क्रम में खोजी जाती है। बनाने के अन्य झंडे के तर्कों के विपरीत, -आई झंडे के साथ दी गई निर्देशिका सीधे ध्वज के बाद आ सकती है: -आईआईआईआर की अनुमति है, साथ ही साथ- डीआईआर। इस वाक्यविन्यास को सी प्रीप्रोसेसर के -आई ध्वज के साथ संगतता के लिए अनुमति है।

-जे नौकरियां

एक साथ चलाने के लिए नौकरियों (आदेश) की संख्या निर्दिष्ट करता है। यदि एक से अधिक विकल्प हैं, तो अंतिम एक प्रभावी है। यदि -जे विकल्प को तर्क के बिना दिया जाता है, तो एक साथ चलने वाली नौकरियों की संख्या को सीमित नहीं करेगा।

-k

एक त्रुटि के बाद जितना संभव हो जारी रखें। जबकि लक्ष्य विफल रहा, और जो लोग इस पर निर्भर हैं, उन्हें पुनर्निर्मित नहीं किया जा सकता है, इन लक्ष्यों की अन्य निर्भरताओं को भी संसाधित किया जा सकता है।

-l

-एल लोड

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

-n

आदेशों को मुद्रित करें जिन्हें निष्पादित किया जाएगा, लेकिन उन्हें निष्पादित न करें।

-o फ़ाइल

फ़ाइल फ़ाइल को रीमेक न करें, भले ही यह इसकी निर्भरताओं से पुराना हो, और फ़ाइल में बदलावों के कारण कुछ भी रीमेक न करें। अनिवार्य रूप से फ़ाइल को बहुत पुराना माना जाता है और इसके नियमों को अनदेखा कर दिया जाता है।

-p

डेटा बेस (नियम और परिवर्तनीय मान) मुद्रित करें जो मेकफ़ाइल पढ़ने से परिणामस्वरूप होते हैं; फिर सामान्य के रूप में निष्पादित करें या अन्यथा निर्दिष्ट करें। यह -v स्विच द्वारा दी गई संस्करण जानकारी को भी प्रिंट करता है (नीचे देखें)। किसी भी फाइल को रीमेक करने के बिना डेटा बेस मुद्रित करने के लिए, make -p -f / dev / null का उपयोग करें।

-q

`प्रश्न मोड ''। कोई आदेश नहीं चलाएं, या कुछ प्रिंट करें; बस एक निकास स्थिति वापस करें जो शून्य है यदि निर्दिष्ट लक्ष्य पहले से ही अद्यतित हैं, अन्यथा nonzero।

-r

अंतर्निहित अंतर्निहित नियमों का उपयोग हटाएं। प्रत्यय नियमों के लिए प्रत्यय की डिफ़ॉल्ट सूची को भी साफ़ करें।

-s

मूक ऑपरेशन; आदेशों को मुद्रित न करें क्योंकि उन्हें निष्पादित किया गया है।

-S

-के विकल्प के प्रभाव को रद्द करें। यह कभी भी जरूरी नहीं है कि एक रिकर्सिव मेक को छोड़कर - -के को मेकफ्लाग्स के माध्यम से शीर्ष-स्तरीय मेक से विरासत में प्राप्त किया जा सकता है या यदि आप अपने पर्यावरण में मेकफ्लग्स सेट करते हैं।

आयकर

फ़ाइलों को स्पर्श करें (उन्हें वास्तव में बदलने के बिना उन्हें अद्यतित करें) उनके आदेश चलाने के बजाए। इसका उपयोग यह दिखाने के लिए किया जाता है कि आदेशों के भविष्य के आविष्कार को मूर्ख बनाने के लिए आदेश दिए गए थे।

-v

मेक प्रोग्राम और एक कॉपीराइट, लेखकों की एक सूची और एक नोटिस के संस्करण को मुद्रित करें कि कोई वारंटी नहीं है।

डब्ल्यू

अन्य प्रसंस्करण से पहले और बाद में कार्यशील निर्देशिका वाले संदेश को प्रिंट करें। रिकर्सिव कमांड कमांड के जटिल घोंसलों से त्रुटियों को ट्रैक करने के लिए यह उपयोगी हो सकता है।

-W फ़ाइल

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