मेक यूटिलिटी का उद्देश्य स्वचालित रूप से निर्धारित करना है कि बड़े कार्यक्रम के कौन से टुकड़ों को पुन: संकलित करने की आवश्यकता है और आदेशों को फिर से संकलित करने के लिए जारी करें। मैनुअल ने जीएनयू कार्यान्वयन का वर्णन किया है, जिसे रिचर्ड स्टॉलमैन और रोलैंड मैकग्राथ ने लिखा था। ये उदाहरण सी प्रोग्राम दिखाते हैं क्योंकि वे सबसे आम हैं, लेकिन आप किसी भी प्रोग्रामिंग भाषा के साथ उपयोग कर सकते हैं जिसका कंपाइलर शेल कमांड के साथ चलाया जा सकता है। वास्तव में, कार्यक्रमों तक सीमित नहीं है। आप किसी भी कार्य का वर्णन करने के लिए इसका उपयोग कर सकते हैं जहां कुछ फ़ाइलों को दूसरों से बदलते समय स्वचालित रूप से दूसरों से अपडेट किया जाना चाहिए।
ध्यान दें: यह पृष्ठ जीएनयू बनाने के दस्तावेज़ीकरण का एक निकास है . इसे कभी-कभी अपडेट किया जाता है क्योंकि जीएनयू प्रोजेक्ट नॉरऑफ का उपयोग नहीं करता है। पूर्ण, वर्तमान दस्तावेज़ के लिए, जानकारी फ़ाइल make.info देखें जो Texinfo स्रोत फ़ाइल make.texinfo से बना है।
सिंटेक्स और बनाने की सुविधा की तैयारी
बनाना -f makefile विकल्प … लक्ष्य …
बनाने के लिए तैयार करने के लिए, आपको मेकफ़ाइल नामक एक फ़ाइल लिखनी होगी जो आपके प्रोग्राम में फ़ाइलों के बीच संबंधों का वर्णन करती है और प्रत्येक फ़ाइल को अपडेट करने के लिए कमांड बताती है। आम तौर पर निष्पादन योग्य फ़ाइल ऑब्जेक्ट फ़ाइलों से अद्यतन होती है, जो बदले में स्रोत फ़ाइलों को संकलित करके बनाई जाती हैं।
एक बार उपयुक्त मेकफ़ाइल मौजूद हो जाने पर, प्रत्येक बार जब आप कुछ स्रोत फ़ाइलों को बदलते हैं तो यह सरल खोल कमांड होता है बनाना सभी आवश्यक recompilations प्रदर्शन करने के लिए पर्याप्त है। मेक प्रोग्राम फाइलों के मेकफ़ाइल डेटा बेस और अंतिम-संशोधित समय का उपयोग यह तय करने के लिए करता है कि कौन सी फाइलों को अपडेट करने की आवश्यकता है। उन फ़ाइलों में से प्रत्येक के लिए, यह डेटाबेस में दर्ज कमांड को जारी करता है।
मेक उपयोगिता मेकफ़ाइल में कमांड को एक या अधिक लक्ष्य नाम अपडेट करने के लिए निष्पादित करती है, जहां नाम आमतौर पर एक कार्यक्रम है। यदि नही-f विकल्प मौजूद है, मेकफ़ाइल के लिए देखेंगेGNUmakefile, makefile, तथाmakefile, उस क्रम में।
आम तौर पर आपको अपनी मेकफ़ाइल या तो मेकफ़ाइल या मेकफ़ाइल कॉल करना चाहिए। (मेकफ़ाइल का उपयोग करने की अनुशंसा की जाती है क्योंकि यह एक निर्देशिका सूची की शुरुआत के करीब प्रमुख रूप से दिखाई देता है, जैसे अन्य महत्वपूर्ण फाइलों के पासREADME।) पहली नाम-चेक की गई, जीएनयूमेकफाइल, अधिकांश मेकफ़ाइल के लिए अनुशंसित नहीं है। आपको इस नाम का उपयोग करना चाहिए यदि आपके पास एक मेकफ़ाइल है जो जीएनयू के लिए विशिष्ट है और बनाने के अन्य संस्करणों द्वारा समझा नहीं जाएगा। अगर मेकफ़ाइल है -, मानक इनपुट पढ़ा जाता है।
बनाना उपयोगिता एक लक्ष्य को अद्यतन करती है यदि यह पूर्व-संशोधित फ़ाइलों पर निर्भर करती है जिन्हें संशोधित किया गया है क्योंकि लक्ष्य को अंतिम बार संशोधित किया गया था, या यदि लक्ष्य मौजूद नहीं है।
विकल्प
बी तथा -m बनाने के अन्य संस्करणों के साथ संगतता के लिए विकल्प अनदेखा किए जाते हैं।
-सी डीआईआर मेकफ़ाइल पढ़ने या कुछ और करने से पहले निर्देशिका डीआईआर में बदल जाएगा। यदि एकाधिक-सी विकल्प निर्दिष्ट हैं, प्रत्येक को पिछले एक के सापेक्ष व्याख्या किया जाता है:-सी/ -सी आदि के बराबर है-सी / आदि। यह आम तौर पर बनाने के पुनरावर्ती आमंत्रण के साथ प्रयोग किया जाता है।
-d विकल्प सामान्य प्रसंस्करण के अलावा डीबगिंग जानकारी प्रिंट करेगा। डीबगिंग जानकारी कहती है कि रीमेकिंग के लिए कौन सी फाइलों पर विचार किया जा रहा है, कौन से फाइल समय की तुलना की जा रही है और किस नतीजे के साथ, वास्तव में कौन सी फाइलों को रीमेड करने की आवश्यकता है, जो निहित नियमों पर विचार किया जाता है और जो लागू होते हैं- यह तय करने के बारे में सब कुछ दिलचस्प है कि क्या करना है ।
-e विकल्प मेकफ़ाइल से चर पर पर्यावरण प्राथमिकता से लिया गया चर देता है।
-f फ़ाइल विकल्प का उपयोग करता है फ़ाइल एक मेकफ़ाइल के रूप में।
-मैं विकल्प फ़ाइलों को रीमेक करने के लिए निष्पादित आदेशों में सभी त्रुटियों को अनदेखा करता है।
-मैं dir विकल्प एक निर्देशिका निर्दिष्ट करता है dir शामिल मेकफ़ाइल खोजने के लिए। यदि कई हैं-मैं विकल्पों का उपयोग कई निर्देशिकाओं को निर्दिष्ट करने के लिए किया जाता है, निर्देशिका निर्दिष्ट क्रम में खोजी जाती है। बनाने के अन्य झंडे के तर्कों के विपरीत, निर्देशिकाएं दी गईं-मैं झंडे के बाद झंडे सीधे आ सकते हैं:-Idir साथ ही अनुमति है-मैं . सी प्रीप्रोसेसर के साथ संगतता के लिए इस वाक्यविन्यास की अनुमति है-मैं झंडा।
-जे नौकरियां विकल्प एक साथ चलाने के लिए नौकरियों (आदेश) की संख्या निर्दिष्ट करता है। यदि एक से अधिक है-j विकल्प, अंतिम एक प्रभावी है। अगर-j विकल्प बिना तर्क के दिया जाता है, बनाना उन नौकरियों की संख्या को सीमित नहीं करेगा जो एक साथ चल सकते हैं।
-k एक त्रुटि के बाद विकल्प जितना संभव हो जारी है; जबकि लक्ष्य जो असफल रहा, और जो इस पर निर्भर हैं, उन्हें पुनर्निर्मित नहीं किया जा सकता है, इन लक्ष्यों की अन्य निर्भरताओं को भी संसाधित किया जा सकता है।
-l तथा -एल लोड विकल्प निर्दिष्ट करते हैं कि यदि कोई अन्य नौकरियां चल रही हैं तो कोई नई नौकरियां (कमांड) शुरू नहीं की जानी चाहिए, और लोड औसत कम से कम हैभार (एक फ्लोटिंग पॉइंट नंबर)। कोई तर्क नहीं के साथ, यह पिछली लोड सीमा को हटा देता है।
-n विकल्प उन आदेशों को प्रिंट करता है जिन्हें निष्पादित किया जाएगा, लेकिन उन्हें निष्पादित नहीं करता है।
-ओ फ़ाइल विकल्प रीमेक नहीं करता है फ़ाइल भले ही यह इसकी निर्भरताओं से पुराना हो, और इसमें बदलावों के कारण कुछ भी रीमेक नहीं किया जाता है फ़ाइल । अनिवार्य रूप से फ़ाइल को बहुत पुराना माना जाता है और इसके नियमों को अनदेखा कर दिया जाता है।
-p विकल्प डेटाबेस (नियम और चर मान) प्रिंट करता है जो मेकफ़ाइल पढ़ने से परिणाम देता है। यह तब सामान्य या अन्यथा निर्दिष्ट के रूप में निष्पादित करता है।यह द्वारा दी गई संस्करण जानकारी को भी प्रिंट करता है-v स्विच (नीचे देखें)। किसी भी फाइल को रीमेक करने की कोशिश किए बिना डेटाबेस प्रिंट करने के लिए, उपयोग करेंबनाना -p -f / dev / बातिल .
-q विकल्प प्रश्न मोड सेट करता है। किसी भी कमांड को न चलाएं या कुछ भी प्रिंट न करें, केवल एक निकास स्थिति वापस करें जो शून्य है यदि निर्दिष्ट लक्ष्य पहले से ही अद्यतित हैं, अन्यथा nonzero।
-r विकल्प अंतर्निहित अंतर्निहित नियमों के उपयोग को समाप्त करता है। प्रत्यय नियमों के लिए प्रत्यय की डिफ़ॉल्ट सूची को भी साफ़ करता है।
-s विकल्प ऑपरेशन को शांत करता है। यह आदेशों को मुद्रित नहीं करता है क्योंकि उन्हें निष्पादित किया जाता है।
-S विकल्प के प्रभाव को रद्द कर देता है-k विकल्प। एक पुनरावर्ती बनाने के अलावा यह कभी जरूरी नहीं है कहा पे-k MAKEFLAGS के माध्यम से शीर्ष स्तर के स्तर से विरासत में प्राप्त किया जा सकता है या यदि आप सेट करते हैं-k अपने पर्यावरण में MAKEFLAGS में।
आयकर विकल्प फ़ाइलों को छूता है (उनके आदेशों को चलाने के बजाए उन्हें वास्तव में बदलते हुए अद्यतित करता है)। इसका उपयोग यह दिखाने के लिए किया जाता है कि आदेशों के भविष्य के आविष्कार को मूर्ख बनाने के लिए आदेश दिए गए थे।
-v विकल्प मेक प्रोग्राम के संस्करण और एक कॉपीराइट, लेखकों की एक सूची, और एक नोटिस है कि कोई वारंटी नहीं है।
डब्ल्यू विकल्प अन्य प्रसंस्करण से पहले और बाद में कार्यशील निर्देशिका वाले संदेश को प्रिंट करता है। यह रिकर्सिव मेक के जटिल घोंसलों से त्रुटियों को ट्रैक करने के लिए उपयोगी हो सकता है आदेश देता है।
डब्ल्यू फ़ाइल विकल्प उस लक्ष्य का नाटक करता है फ़ाइल अभी संशोधित किया गया है। जब के साथ प्रयोग किया जाता है-n ध्वज, यह आपको दिखाता है कि क्या होगा यदि आप उस फ़ाइल को संशोधित करना चाहते थे। के बिना-n, यह लगभग चलाने के समान ही हैस्पर्श चलने से पहले दिए गए फ़ाइल पर आदेश दें, सिवाय इसके कि संशोधन समय केवल कल्पना की कल्पना में ही बदला जाता है।




