הפוך את חייך לקלים יותר על ידי אוטומציה של משימות שחוזרות על עצמן באמצעות Makefiles.
בפיתוח תוכנה מודרני, אוטומציה יעילה של בנייה היא חיונית להצלחת הפרויקט. Makefiles, כלי אוטומציית בנייה פופולרי, מספק למפתחים של כל הערימות דרך תמציתית ועוצמתית לנהל תהליכי בנייה מורכבים.
על ידי שילוב והפעלה הדדית של Makefiles עם Go, אתה יכול להפוך משימות חוזרות לאוטומטיות, לייעל תהליכי בנייה ולשפר את הפרודוקטיביות.
הבנת Makefiles
ההבנה של אופן הפעולה של Makefiles היא חיונית לארגון יעיל ואוטומציה של בניית הפרויקט שלך.
Makefiles עוקבים אחר מבנה ותחביר ספציפיים להגדרת כללים לבנייה ותחזוקה של פרויקטים. הליבה, Makefile מורכב מחוקים המציינים יעדים, תלות ופקודות. כל כלל מתחיל ביעד, ואחריו התלות שלו והפקודות הדרושות לבנייה או ביצוע של המטרה.
יעדים מייצגים את קבצי הפלט או הפעולות הרצויות עבור Makefile. יעדים יכולים להיות שמות קבצים או תוויות שמתארות את המשימה. לדוגמה, יעד בשם לְנַקוֹת עשוי להסיר קבצים מיותרים שנוצרו במהלך תהליך הבנייה.
תלות הן קבצים או משימות הנדרשות לבניית יעד. אם ישתנו תלות כלשהי, ה-Makefile יבנה מחדש יעדים משויכים כדי להבטיח שחלקים נחוצים מהפרויקט יפעלו. תציין תלות אחרי היעד, מופרדים ברווחים.
פקודות הן פעולות או פקודות מעטפת שזקוקים לביצוע כדי לבנות או לבצע מטרות ספציפיות. פקודות נכתבות בדרך כלל בשפת סקריפטים של מעטפת של מערכת ההפעלה.
כל פקודה חייבת להתחיל בתו טאב לצורך זיהוי.
build: main.go utils.go
עבור לבנות -o myapp main.go utils.go
לְנַקוֹת:
rm myapp
ב-Makefile לעיל, ישנם שני יעדים: לִבנוֹת ו לְנַקוֹת.
ה לִבנוֹת היעד תלוי ב main.go ו utils.go קבצים, והפקודה הקשורה פועלת במהדר Go כדי לבנות קובץ הפעלה בשם myapp.
מצד שני, ה לְנַקוֹת המטרה מסירה את myapp בר הפעלה.
כדי להרכיב את קוד ה-Go שלך, נווט אל ספריית העבודה והפעל את לעשות לבנות פקודה.
לעשות לבנות
הכלי Make יטפל בתהליך הקומפילציה, ויאפשר לך להתמקד בכתיבת קוד.
הגדרת Makefiles עבור פרויקטי ה-Go שלך
אתה יכול להשתמש ב-Makefiles כדי לבנות ולהדר את התוכניות שלך, לבצע בדיקות קוד ובדיקות איכות, ולשילוב ופריסה מתמשכים.
הפעל פקודה זו כדי ליצור Makefile עבור הפרויקט שלך בספריית השורש. ה Makefile ישמש כנקודת הכניסה להגדרת משימות הבנייה שלך.
גע ב-Makefile
ל-Makefile שלך לא אמורות להיות הרחבות כלשהן.
לאחר יצירת Makefile, אתה יכול לכתוב פקודות, תלות ויעדים לקובץ עבור פעולות הפרויקט שלך.
להלן דוגמה של Makefile המשמשת ככלי אוטומציה לבנייה עבור הפרויקט שלך:
# Makefile
# משתנים
GOCMD=לך
GOBUILD=$(GOCMD) לִבנוֹת
GOTEST=$(GOCMD) מִבְחָן
GOCLEAN=$(GOCMD) לְנַקוֹת# יעדים
לִבנוֹת:
$(GOBUILD) אפליקציה -o.מִבְחָן:
$(GOTEST) ./...
לְנַקוֹת:
$(GOCLEAN)
אפליקציית rm -f
אתה יכול להתאים אישית את Makefile שלך בהתאם לצרכים הספציפיים של הפרויקט שלך.
הנה גרסה שונה של Makefile להעברת דגלים ומשתני סביבה נוספים במהלך הבדיקה או תהליך הבנייה של הפרויקט שלך:
# Makefile
# משתנים
GOCMD=לך
GOBUILD=$(GOCMD) לִבנוֹת
GOTEST=$(GOCMD) מִבְחָן
GOCLEAN=$(GOCMD) לְנַקוֹת
BINARY_NAME=אפליקציה
TEST_FLAGS=-v# יעדים
לִבנוֹת:
$(GOBUILD) -o $(BINARY_NAME) .מִבְחָן:
$(GOTEST)$(TEST_FLAGS) ./...
לְנַקוֹת:
$(GOCLEAN)
rm -f $(BINARY_NAME)
ב-Makefile זה, ישנם שני משתנים חדשים בשם BINARY_NAME ו TEST_FLAGS. ה BINARY_NAME משתנה מציין את השם של קובץ ההפעלה שנוצר.
ה TEST_FLAGS משתנה מאפשר לך לציין דגלים נוספים בעת הפעלת בדיקות (במקרה זה, ה -v הדגל מאפשר פלט מילולי במהלך ביצוע הבדיקה).
Makefiles מספק גם דרך קלה להגדיר משתני סביבה ודגלים עבור הפרויקט שלך.
אתה יכול להוסיף שורות אלה ל-Makefile שלך אם אתה צריך להגדיר את GOOS ו GOARCH משתנים לבניית הפרויקט שלך עבור מערכת הפעלה או ארכיטקטורה ספציפיים.
# Makefile
# משתנים
GOCMD=לך
GOBUILD=$(GOCMD) לִבנוֹת
GOTEST=$(GOCMD) מִבְחָן
GOCLEAN=$(GOCMD) לְנַקוֹת
BINARY_NAME=אפליקציה
TEST_FLAGS=-v
GOOS=לינוקס
GOARCH=amd64# יעדים
לִבנוֹת:
$(GOBUILD) -o $(BINARY_NAME) .מִבְחָן:
$(GOTEST)$(TEST_FLAGS) ./...
לְנַקוֹת:
$(GOCLEAN)
rm -f $(BINARY_NAME)
ב-Makefile המעודכן, ישנם שני משתנים חדשים עבור GOOS ו GOARCH משתני סביבה המאפשרים לך לציין את מערכת ההפעלה והארכיטקטורה היעד עבור המבנה שלך (במקרה זה, ה GOOS המשתנה מוגדר ל לינוקס ו GOARCH ל amd64 כדי לבנות את הפרויקט עבור לינוקס על ארכיטקטורת x86-64).
זכור להתאים את המשתנים הללו בהתאם לדרישות הספציפיות של הפרויקט שלך.
אתה יכול להתייחס ל לך תיעוד לרשימת הערכים הנתמכים עבור GOOS ו GOARCH אם אתה צריך לבנות עבור פלטפורמה אחרת.
בניית אוטומציה עם Makefiles
Makefiles שימושיים גם להידור קוד, יצירת תיעוד וניהול תלות.
עם Makefiles, אתה יכול להפוך את זמן ההידור לאוטומטי, ולחסוך לך זמן ומאמץ.
הנה Makefile שמרכיב תוכנית Go:
# הגדר משתנים
GOCMD = ללכת
GOBUILD = $(GOCMD) לִבנוֹת
BINARY_NAME = התוכנית שלי# יעד ברירת מחדל
הכל: לבנות# בנה יעד
לִבנוֹת:
$(GOBUILD) -o $(BINARY_NAME)
# מטרה נקייה
לְנַקוֹת:
rm -f $(BINARY_NAME)
ה-Makefile מגדיר משתנים כמו ה- GOCMD (הפקודה Go) ו GOBUILD (פקודת הבנייה). ה לִבנוֹת המטרה מפעילה את לך לבנות הפקודה כדי להרכיב את תוכנית ה-Go שלנו ולהפיק את הבינארי עם השם שצוין (התוכנית שלי במקרה הזה). ה לְנַקוֹת target מסיר את הבינארי שנוצר מהפרויקט.
אתה יכול להשתמש ב-Makefiles כדי להפוך את התקנת התלות לאוטומטית ולעדכן את התלות החיצונית של הפרויקט שלך.
# הגדר משתנים
GOCMD = ללכת
GOBUILD = $(GOCMD) לִבנוֹת
GOGET = $(GOCMD) לקבל
BINARY_NAME = התוכנית שלי# יעד ברירת מחדל
הכל: לבנות# בנה יעד
לִבנוֹת:
$(GOBUILD) -o $(BINARY_NAME)# התקנת תלות
מחלקות:
$(GOGET) -u
# מטרה נקייה
לְנַקוֹת:
rm -f $(BINARY_NAME)
ל-Makefile יש א deps יעד שמשתמש ב- לך לקבל פקודה להתקנה או עדכון של תלות בפרויקט. אתה יכול לרוץ לעשות deps כדי להתקין את התלות של הפרויקט שלך.
Makefiles יכול להפוך את יצירת התיעוד לאוטומטי ולשפר את מסמכים כתהליך קוד.
הנה איך אתה יכול הפק תיעוד אוטומטי עבור פרויקטי ה-Go שלך עם הכלי godoc ו-Makefile:
# הגדר משתנים
GODOC = גודוק
DOCS_DIR = מסמכים# יעד ברירת מחדל
הכל: מסמכים# הפק תיעוד
מסמכים:
$(GODOC) -html -dir. > $(DOCS_DIR)/index.html
# מטרה נקייה
לְנַקוֹת:
rm -rf $(DOCS_DIR)
ב-Makefile, ה- מסמכים המטרה מפעילה את godoc פקודה עם ה -html דגל כדי ליצור תיעוד HTML עבור קוד ה-go שלך ושומר את התיעוד ב- מסמכים מַדרִיך.
אתה תפעיל את לעשות מסמכים פקודה להפקת תיעוד עדכני עבור פרויקט ה-Go שלך.
Makefiles שימושיים לעבודה עם מערכות הפעלה מבוססות יוניקס
על ידי מינוף הגמישות של Makefiles, אתה יכול להגדיר פקודות בנייה מותאמות אישית ולבצע משימות מורכבות בתוך דקות. Makefile חוסך זמן ומבטיח עקביות ושחזור בכל סביבות בנייה.
יתרון נוסף של Makefiles הוא התאימות שלו למערכות מבוססות יוניקס. Make הוא כלי עזר נתמך נרחב במערכות הפעלה מבוססות יוניקס, כולל לינוקס ו-macOS, מה שהופך אותו לכלי נייד ואמין עבור מפתחים.