Κάντε τη ζωή σας ευκολότερη αυτοματοποιώντας επαναλαμβανόμενες εργασίες χρησιμοποιώντας τα Makefiles.
Στη σύγχρονη ανάπτυξη λογισμικού, η αποτελεσματική αυτοματοποίηση κατασκευής είναι ζωτικής σημασίας για την επιτυχία ενός έργου. Το Makefiles, ένα δημοφιλές εργαλείο αυτοματισμού κατασκευής, παρέχει στους προγραμματιστές όλων των στοίβων έναν συνοπτικό και ισχυρό τρόπο διαχείρισης πολύπλοκων διαδικασιών κατασκευής.
Με την ενσωμάτωση και τη διαλειτουργικότητα των Makefiles με το Go, μπορείτε να αυτοματοποιήσετε επαναλαμβανόμενες εργασίες, να βελτιώσετε τις διαδικασίες κατασκευής και να βελτιώσετε την παραγωγικότητα.
Κατανόηση των Makefiles
Η κατανόηση του τρόπου λειτουργίας των Makefiles είναι ζωτικής σημασίας για την αποτελεσματική οργάνωση και αυτοματοποίηση των κατασκευών του έργου σας.
Τα makefiles ακολουθούν μια συγκεκριμένη δομή και σύνταξη για τον καθορισμό κανόνων για την κατασκευή και τη συντήρηση έργων. Στον πυρήνα, ένα Makefile αποτελείται από κανόνες που καθορίζουν στόχους, εξαρτήσεις και εντολές. Κάθε κανόνας ξεκινά με έναν στόχο, ακολουθούμενο από τις εξαρτήσεις του και τις εντολές που απαιτούνται για την κατασκευή ή την εκτέλεση του στόχου.
Οι στόχοι αντιπροσωπεύουν τα επιθυμητά αρχεία εξόδου ή ενέργειες για το Makefile. Οι στόχοι μπορεί να είναι ονόματα αρχείων ή ετικέτες που περιγράφουν την εργασία. Για παράδειγμα, ένας στόχος με όνομα ΚΑΘΑΡΗ μπορεί να αφαιρέσει τα περιττά αρχεία που δημιουργούνται κατά τη διαδικασία κατασκευής.
Οι εξαρτήσεις είναι αρχεία ή εργασίες που απαιτούνται για τη δημιουργία ενός στόχου. Εάν τροποποιηθούν οποιεσδήποτε εξαρτήσεις, το Makefile θα δημιουργήσει εκ νέου τους σχετικούς στόχους για να διασφαλίσει ότι τα απαραίτητα μέρη του έργου λειτουργούν. Θα καθορίσετε εξαρτήσεις μετά τον στόχο, διαχωρισμένες με κενά.
Οι εντολές είναι ενέργειες ή εντολές φλοιού που χρειάζονται εκτέλεση για τη δημιουργία ή την εκτέλεση συγκεκριμένων στόχων. Οι εντολές συνήθως γράφονται σε μια γλώσσα δέσμης ενεργειών φλοιού του λειτουργικού συστήματος.
Κάθε εντολή πρέπει να ξεκινά με έναν χαρακτήρα καρτέλας για αναγνώριση.
κατασκευή: main.go utils.go
πηγαίνετε build -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) δοκιμή
ΓΟΚΛΕΑΝ=$(GOCMD) ΚΑΘΑΡΗ#Στόχοι
χτίζω:
$(GOBUILD) -o εφαρμογή .δοκιμή:
$(GOTEST) ./...
ΚΑΘΑΡΗ:
$(GOCLEAN)
rm -f εφαρμογή
Μπορείτε να προσαρμόσετε το Makefile σας σύμφωνα με τις συγκεκριμένες ανάγκες του έργου σας.
Ακολουθεί μια τροποποιημένη έκδοση του Makefile για τη μετάδοση πρόσθετων σημαιών και μεταβλητών περιβάλλοντος κατά τη διάρκεια της διαδικασίας δοκιμής ή κατασκευής του έργου σας:
# Makefile
# Μεταβλητές
GOCMD=πάω
GOBUILD=$(GOCMD) χτίζω
GOTEST=$(GOCMD) δοκιμή
ΓΟΚΛΕΑΝ=$(GOCMD) ΚΑΘΑΡΗ
BINARY_NAME=εφαρμογή
TEST_FLAGS=-v#Στόχοι
χτίζω:
$(GOBUILD) -ο $(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) δοκιμή
ΓΟΚΛΕΑΝ=$(GOCMD) ΚΑΘΑΡΗ
BINARY_NAME=εφαρμογή
TEST_FLAGS=-v
GOOS=linux
GOARCH=amd64#Στόχοι
χτίζω:
$(GOBUILD) -ο $(BINARY_NAME) .δοκιμή:
$(GOTEST)$(TEST_FLAGS) ./...
ΚΑΘΑΡΗ:
$(GOCLEAN)
rm -f $(BINARY_NAME)
Στο ενημερωμένο Makefile, υπάρχουν δύο νέες μεταβλητές για το GOOS και GOARCH μεταβλητές περιβάλλοντος που σας επιτρέπουν να καθορίσετε το στοχευόμενο λειτουργικό σύστημα και την αρχιτεκτονική για την κατασκευή σας (σε αυτήν την περίπτωση, το GOOS μεταβλητή έχει οριστεί σε linux και GOARCH προς την amd64 για τη δημιουργία του έργου για Linux στην αρχιτεκτονική x86-64).
Θυμηθείτε να προσαρμόσετε αυτές τις μεταβλητές με βάση τις συγκεκριμένες απαιτήσεις του έργου σας.
Μπορείτε να ανατρέξετε στο Μεταβείτε τεκμηρίωση για τη λίστα των υποστηριζόμενων τιμών για GOOS και GOARCH εάν χρειάζεται να δημιουργήσετε για διαφορετική πλατφόρμα.
Δημιουργία αυτοματισμού με Makefiles
Τα makefiles είναι επίσης εύχρηστα για τη μεταγλώττιση κώδικα, τη δημιουργία τεκμηρίωσης και τη διαχείριση εξαρτήσεων.
Με το Makefiles, μπορείτε να αυτοματοποιήσετε το χρόνο μεταγλώττισης, εξοικονομώντας χρόνο και προσπάθεια.
Ακολουθεί ένα Makefile που μεταγλωττίζει ένα πρόγραμμα Go:
# Ορισμός μεταβλητών
GOCMD = πήγαινε
GOBUILD = $(GOCMD) χτίζω
BINARY_NAME = το πρόγραμμα μου# Προεπιλεγμένος στόχος
όλα: κατασκευή# Δημιουργία στόχου
χτίζω:
$(GOBUILD) -ο $(BINARY_NAME)
# Καθαρός στόχος
ΚΑΘΑΡΗ:
rm -f $(BINARY_NAME)
Το Makefile ορίζει μεταβλητές όπως το GOCMD (την εντολή Go) και GOBUILD (την εντολή build). ο χτίζω στόχος επικαλείται το πήγαινε να φτιάξεις εντολή για μεταγλώττιση του προγράμματος Go μας και παραγωγή του δυαδικού αρχείου με το καθορισμένο όνομα (το πρόγραμμα μου σε αυτήν την περίπτωση). ο ΚΑΘΑΡΗ Ο στόχος αφαιρεί το δυαδικό αρχείο που δημιουργήθηκε από το έργο.
Μπορείτε να χρησιμοποιήσετε τα Makefiles για να αυτοματοποιήσετε την εγκατάσταση εξαρτήσεων και να διατηρήσετε ενημερωμένες τις εξωτερικές εξαρτήσεις του έργου σας.
# Ορισμός μεταβλητών
GOCMD = πήγαινε
GOBUILD = $(GOCMD) χτίζω
GOGET = $(GOCMD) παίρνω
BINARY_NAME = το πρόγραμμα μου# Προεπιλεγμένος στόχος
όλα: κατασκευή# Δημιουργία στόχου
χτίζω:
$(GOBUILD) -ο $(BINARY_NAME)# Εγκαταστήστε εξαρτήσεις
βάθη:
$ (GOGET) -u
# Καθαρός στόχος
ΚΑΘΑΡΗ:
rm -f $(BINARY_NAME)
Το Makefile έχει ένα βαθ στόχος που χρησιμοποιεί το πήγαινε πάρε εντολή εγκατάστασης ή ενημέρωσης εξαρτήσεων έργου. Μπορείτε να τρέξετε κάνουν βάθη για να εγκαταστήσετε τις εξαρτήσεις του έργου σας.
Τα Makefiles μπορούν να αυτοματοποιήσουν τη δημιουργία τεκμηρίωσης και να βελτιώσουν τη δική σας έγγραφα ως διαδικασία κώδικα.
Δείτε πώς μπορείτε δημιουργήστε αυτόματα τεκμηρίωση για τα έργα σας Go με το εργαλείο godoc και Makefile:
# Ορισμός μεταβλητών
GODOC = godoc
DOCS_DIR = έγγραφα# Προεπιλεγμένος στόχος
όλα: έγγραφα# Δημιουργήστε τεκμηρίωση
έγγραφα:
$(GODOC) -html -σκην. > $(DOCS_DIR)/index.html
# Καθαρός στόχος
ΚΑΘΑΡΗ:
rm -rf $(DOCS_DIR)
Στο Makefile, το έγγραφα στόχος επικαλείται το godoc εντολή με το -html επισημάνετε για τη δημιουργία τεκμηρίωσης HTML για τον κώδικα go σας και αποθηκεύει την τεκμηρίωση στο έγγραφα Ευρετήριο.
Θα εκτελέσετε το φτιάξτε έγγραφα εντολή για τη δημιουργία ενημερωμένης τεκμηρίωσης για το έργο Go σας.
Τα Makefiles είναι εύχρηστα για εργασία με λειτουργικά συστήματα που βασίζονται σε Unix
Αξιοποιώντας την ευελιξία των Makefiles, μπορείτε να ορίσετε προσαρμοσμένες εντολές κατασκευής και να εκτελέσετε σύνθετες εργασίες μέσα σε λίγα λεπτά. Το Makefile εξοικονομεί χρόνο και εξασφαλίζει συνέπεια και επαναληψιμότητα σε περιβάλλοντα κατασκευής.
Ένα άλλο πλεονέκτημα του Makefiles είναι η συμβατότητά του με συστήματα που βασίζονται σε Unix. Το Make είναι ένα ευρέως υποστηριζόμενο βοηθητικό πρόγραμμα σε λειτουργικά συστήματα που βασίζονται σε Unix, συμπεριλαμβανομένων των Linux και macOS, καθιστώντας το ένα φορητό και αξιόπιστο εργαλείο για προγραμματιστές.