Makefiles का उपयोग करके दोहराए जाने वाले कार्यों को स्वचालित करके अपना जीवन आसान बनाएं।

आधुनिक सॉफ्टवेयर विकास में, एक परियोजना की सफलता के लिए कुशल बिल्ड ऑटोमेशन महत्वपूर्ण है। Makefiles, एक लोकप्रिय बिल्ड ऑटोमेशन टूल है, जो जटिल निर्माण प्रक्रियाओं को प्रबंधित करने के लिए सभी स्टैक के डेवलपर्स को एक संक्षिप्त और शक्तिशाली तरीका प्रदान करता है।

Makefiles को Go के साथ एकीकृत और इंटरऑपरेट करके, आप दोहराए जाने वाले कार्यों को स्वचालित कर सकते हैं, निर्माण प्रक्रियाओं को सुव्यवस्थित कर सकते हैं और उत्पादकता बढ़ा सकते हैं।

मेकफाइल्स को समझना

यह समझना कि Makefiles कैसे काम करता है, आपके प्रोजेक्ट के निर्माण को कुशलतापूर्वक व्यवस्थित और स्वचालित करने के लिए महत्वपूर्ण है।

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

लक्ष्य मेकफ़ाइल के लिए वांछित आउटपुट फ़ाइलों या क्रियाओं का प्रतिनिधित्व करते हैं। लक्ष्य फ़ाइल नाम या लेबल हो सकते हैं जो कार्य का वर्णन करते हैं। उदाहरण के लिए, नामित एक लक्ष्य साफ़ निर्माण प्रक्रिया के दौरान उत्पन्न अनावश्यक फाइलों को हटा सकते हैं।

निर्भरताएँ लक्ष्य बनाने के लिए आवश्यक फ़ाइलें या कार्य हैं। यदि कोई निर्भरता संशोधित की जाती है, तो Makefile यह सुनिश्चित करने के लिए संबद्ध लक्ष्यों का पुनर्निर्माण करेगा कि परियोजना के आवश्यक भाग कार्य करें। आप लक्ष्य के बाद रिक्तियों द्वारा अलग-अलग निर्भरताओं को निर्दिष्ट करेंगे।

आदेश कार्रवाई कर रहे हैं या शेल कमांड विशिष्ट लक्ष्यों को बनाने या निष्पादित करने के लिए निष्पादन की आवश्यकता होती है। कमांड आमतौर पर ऑपरेटिंग सिस्टम की शेल स्क्रिप्टिंग भाषा में लिखे जाते हैं।

पहचान के लिए प्रत्येक कमांड को एक टैब कैरेक्टर से शुरू होना चाहिए।

बिल्ड: main.go utils.go
go बिल्ड -o myapp main.go utils.go

साफ़:
आरएम myapp

उपरोक्त मेकफ़ाइल में, दो लक्ष्य हैं: निर्माण और साफ़.

निर्माण लक्ष्य पर निर्भर करता है main.go और utils.go फ़ाइलें, और संबंधित कमांड एक निष्पादन योग्य नाम बनाने के लिए गो कंपाइलर पर चलता है myapp.

दूसरी ओर, द साफ़ लक्ष्य हटा देता है myapp निष्पादन योग्य।

अपने गो कोड को संकलित करने के लिए, कार्यशील निर्देशिका पर नेविगेट करें और निर्माण करना आज्ञा।

निर्माण करना

मेक टूल संकलन प्रक्रिया को संभालेगा, जिससे आप कोड लिखने पर ध्यान केंद्रित कर सकेंगे।

अपने गो प्रोजेक्ट्स के लिए मेकफाइल्स सेट करना

आप अपने प्रोग्राम बनाने और संकलित करने, कोड परीक्षण और गुणवत्ता जांच करने और निरंतर एकीकरण और परिनियोजन के लिए Makefiles का उपयोग कर सकते हैं।

रूट डायरेक्टरी में अपने प्रोजेक्ट के लिए मेकफाइल बनाने के लिए यह कमांड चलाएँ। मेकफाइल आपके निर्माण कार्यों को परिभाषित करने के लिए प्रवेश बिंदु के रूप में काम करेगा।

मेकफ़ाइल स्पर्श करें

आपके मेकफ़ाइल में कोई एक्सटेंशन नहीं होना चाहिए।

मेकफाइल बनाने के बाद, आप अपने प्रोजेक्ट के संचालन के लिए फ़ाइल में कमांड, निर्भरता और लक्ष्य लिख सकते हैं।

यहां एक उदाहरण मेकफाइल है जो आपके प्रोजेक्ट के लिए बिल्ड ऑटोमेशन टूल के रूप में कार्य करता है:

# मेकफाइल

# चर
जीओसीएमडी = जाओ
गोबिल्ड =$(जीओसीएमडी) निर्माण
गोटेस्ट =$(जीओसीएमडी) परीक्षा
गोक्लीन =$(जीओसीएमडी) साफ़

# लक्ष्य
निर्माण:
$(गोबिल्ड) -ओ ऐप।

परीक्षा:
$(GOTEST) ./...

साफ़:
$(गोक्लीन)
आरएम-एफ ऐप

आप अपने मेकफाइल को अपनी परियोजना की विशिष्ट आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं।

आपकी परियोजना के परीक्षण या निर्माण प्रक्रिया के दौरान अतिरिक्त झंडे और पर्यावरण चर पारित करने के लिए यहां मेकफाइल का एक संशोधित संस्करण है:

# मेकफाइल

# चर
जीओसीएमडी = जाओ
गोबिल्ड =$(जीओसीएमडी) निर्माण
गोटेस्ट =$(जीओसीएमडी) परीक्षा
गोक्लीन =$(जीओसीएमडी) साफ़
BINARY_NAME=ऐप
TEST_FLAGS=-v

# लक्ष्य
निर्माण:
$(गोबिल्ड) -ओ $(BINARY_NAME) .

परीक्षा:
$(GOTEST)$(TEST_FLAGS) ./...

साफ़:
$(गोक्लीन)
आरएम -एफ $(BINARY_NAME)

इस Makefile में दो नए वेरिएबल नाम दिए गए हैं BINARY_NAME और TEST_FLAGS. BINARY_NAME चर उत्पन्न निष्पादन योग्य फ़ाइल का नाम निर्दिष्ट करता है।

TEST_FLAGS चर आपको परीक्षण चलाते समय अतिरिक्त झंडे निर्दिष्ट करने की अनुमति देता है (इस मामले में, -वी ध्वज परीक्षण निष्पादन के दौरान वर्बोज़ आउटपुट सक्षम करता है)।

Makefiles आपके प्रोजेक्ट के लिए पर्यावरण चर और फ़्लैग को कॉन्फ़िगर करने का एक आसान तरीका भी प्रदान करता है।

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

# मेकफाइल

# चर
जीओसीएमडी = जाओ
गोबिल्ड =$(जीओसीएमडी) निर्माण
गोटेस्ट =$(जीओसीएमडी) परीक्षा
गोक्लीन =$(जीओसीएमडी) साफ़
BINARY_NAME=ऐप
TEST_FLAGS=-v
GOOS=linux
GOARCH=amd64

# लक्ष्य
निर्माण:
$(गोबिल्ड) -ओ $(BINARY_NAME) .

परीक्षा:
$(GOTEST)$(TEST_FLAGS) ./...

साफ़:
$(गोक्लीन)
आरएम -एफ $(BINARY_NAME)

अद्यतन मेकफ़ाइल में, के लिए दो नए चर हैं GOOS और GOARCH पर्यावरण चर जो आपको अपने निर्माण के लिए लक्ष्य ऑपरेटिंग सिस्टम और आर्किटेक्चर निर्दिष्ट करने की अनुमति देते हैं (इस मामले में, GOOS चर पर सेट है लिनक्स और GOARCH को amd64 x86-64 आर्किटेक्चर पर लिनक्स के लिए प्रोजेक्ट बनाने के लिए)।

अपनी परियोजना की विशिष्ट आवश्यकताओं के आधार पर इन चरों को अनुकूलित करना याद रखें।

आप इसका उल्लेख कर सकते हैं दस्तावेज जाओ के लिए समर्थित मानों की सूची के लिए GOOS और GOARCH यदि आपको एक अलग मंच के लिए निर्माण करने की आवश्यकता है।

Makefiles के साथ स्वचालन बनाएँ

Makefiles कोड संकलित करने, दस्तावेज़ बनाने और निर्भरता प्रबंधित करने के लिए भी उपयोगी हैं।

Makefiles के साथ, आप संकलन समय को स्वचालित कर सकते हैं, अपना समय और प्रयास बचा सकते हैं।

यहाँ एक मेकफाइल है जो एक गो प्रोग्राम को संकलित करता है:

# चर परिभाषित करें
जीओसीएमडी = जाओ
गोबिल्ड = $(जीओसीएमडी) निर्माण
BINARY_NAME = मायप्रोग्राम

# डिफ़ॉल्ट लक्ष्य
सब: निर्माण

#बिल्ड टारगेट
निर्माण:
$(गोबिल्ड) -ओ $(BINARY_NAME)

# स्वच्छ लक्ष्य
साफ़:
आरएम -एफ $(BINARY_NAME)

Makefile जैसे चर को परिभाषित करता है जीओसीएमडी (गो कमांड) और GOBUILD (बिल्ड कमांड)। निर्माण लक्ष्य का आह्वान करता है जाओ निर्माण करो हमारे गो प्रोग्राम को संकलित करने और निर्दिष्ट नाम के साथ बाइनरी का उत्पादन करने की आज्ञा (myprogram इस मामले में)। साफ़ लक्ष्य परियोजना से उत्पन्न बाइनरी को हटा देता है।

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

# चर परिभाषित करें
जीओसीएमडी = जाओ
गोबिल्ड = $(जीओसीएमडी) निर्माण
गोगेट = $(जीओसीएमडी) पाना
BINARY_NAME = मायप्रोग्राम

# डिफ़ॉल्ट लक्ष्य
सब: निर्माण

#बिल्ड टारगेट
निर्माण:
$(गोबिल्ड) -ओ $(BINARY_NAME)

# निर्भरताएँ स्थापित करें
डेप्स:
$(गोगेट) यू

# स्वच्छ लक्ष्य
साफ़:
आरएम -एफ $(BINARY_NAME)

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

Makefiles प्रलेखन निर्माण को स्वचालित कर सकता है और आपकी डॉक्स कोड प्रक्रिया के रूप में.

यहां बताया गया है कि आप कैसे कर सकते हैं Godoc टूल के साथ अपने Go प्रोजेक्ट्स के लिए ऑटो-जनरेट डॉक्यूमेंटेशन और मेकफ़ाइल:

# चर परिभाषित करें
GODOC = गोडॉक
DOCS_DIR = डॉक्स

# डिफ़ॉल्ट लक्ष्य
सब: डॉक्स

# दस्तावेज तैयार करें
डॉक्स:
$(जीओडीओसी) -एचटीएमएल -दिर। > $(DOCS_DIR)/index.html

# स्वच्छ लक्ष्य
साफ़:
आरएम -आरएफ $(DOCS_DIR)

मेकफ़ाइल में, डॉक्स लक्ष्य का आह्वान करता है godoc के साथ आदेश -एचटीएमएल अपने गो कोड के लिए HTML दस्तावेज़ जनरेट करने के लिए फ़्लैग करें और दस्तावेज़ को डॉक्स निर्देशिका।

आप चलाएंगे डॉक्स बनाओ अपने गो प्रोजेक्ट के लिए अप-टू-डेट दस्तावेज़ तैयार करने के लिए आदेश।

मेकफाइल्स यूनिक्स-आधारित ऑपरेटिंग सिस्टम के साथ काम करने के लिए उपयोगी हैं

Makefiles के लचीलेपन का लाभ उठाकर, आप कस्टम बिल्ड कमांड को परिभाषित कर सकते हैं और जटिल कार्यों को मिनटों में निष्पादित कर सकते हैं। Makefile समय बचाता है और निर्माण वातावरण में स्थिरता और पुनरुत्पादन सुनिश्चित करता है।

Makefiles का एक अन्य लाभ यूनिक्स-आधारित प्रणालियों के साथ इसकी अनुकूलता है। मेक लिनक्स और मैकओएस सहित यूनिक्स-आधारित ऑपरेटिंग सिस्टम पर व्यापक रूप से समर्थित उपयोगिता है, जो इसे डेवलपर्स के लिए एक पोर्टेबल और विश्वसनीय उपकरण बनाता है।