Εγχειρίδια για τη γραμμή εντολών

Man » make Manual online - λεπτομερής διαδικτυακή τεκμηρίωση για τη σελίδα man make

🌍
make - Εργαλείο GNU Make για τη διαχείριση ομάδων προγραμμάτων

ΠΕΡΙΛΗΨΗ

make [ΕΠΙΛΟΓΗ]... [ΣΤΟΧΟΣ]...

ΠΕΡΙΓΡΑΦΗ

Το βοηθητικό πρόγραμμα make θα καθορίσει αυτόματα ποια μέρη ενός μεγάλου προγράμματος πρέπει να επαναμεταγλωττιστούν και θα εκδώσει τις εντολές για να τα επαναμεταγλωττίσει. Το εγχειρίδιο περιγράφει την υλοποίηση GNU του make, το οποίο γράφτηκε από τους Richard Stallman και Roland McGrath και το οποίο συντηρείται επί του παρόντος από τον Paul Smith. Τα παραδείγματά μας δείχνουν προγράμματα C, επειδή είναι πολύ συνηθισμένα, αλλά μπορείτε να χρησιμοποιήσετε το make με οποιαδήποτε γλώσσα προγραμματισμού της οποίας ο μεταγλωττιστής μπορεί να εκτελεστεί με μια εντολή shell. Στην πραγματικότητα, το make δεν περιορίζεται σε προγράμματα. Μπορείτε να το χρησιμοποιήσετε για να περιγράψετε οποιαδήποτε εργασία όπου ορισμένα αρχεία πρέπει να ενημερώνονται αυτόματα από άλλα όποτε τα άλλα αλλάζουν.

Για να προετοιμαστείτε για τη χρήση του make, πρέπει να γράψετε ένα αρχείο που ονομάζεται makefile το οποίο περιγράφει τις σχέσεις μεταξύ των αρχείων στο πρόγραμμά σας και παρέχει εντολές για την ενημέρωση κάθε αρχείου. Σε ένα πρόγραμμα, συνήθως το εκτελέσιμο αρχείο ενημερώνεται από αρχεία αντικειμένων, τα οποία με τη σειρά τους δημιουργούνται με τη μεταγλώττιση των αρχείων πηγής.

Μόλις υπάρχει ένα κατάλληλο makefile, κάθε φορά που αλλάζετε κάποια αρχεία πηγής, η ακόλουθη απλή εντολή shell:

make

είναι αρκετή για να εκτελέσει όλες τις απαραίτητες επαναμεταγλωττίσεις. Το πρόγραμμα make χρησιμοποιεί την περιγραφή του makefile και τους χρόνους τελευταίας τροποποίησης των αρχείων για να αποφασίσει ποια από τα αρχεία πρέπει να ενημερωθούν.

Για καθένα από αυτά τα αρχεία, εκδίδει τις εντολές που έχουν καταγραφεί στο makefile.

Το make εκτελεί εντολές στο makefile για να ενημερώσει έναν ή περισσότερους στόχους, όπου ο στόχος είναι συνήθως ένα
πρόγραμμα. Εάν δεν υπάρχει η επιλογή -f, το make θα αναζητήσει τα makefile GNUmakefile, makefile και

Makefile, με αυτή τη σειρά.

Συνήθως, θα πρέπει να ονομάζετε το makefile σας είτε makefile είτε Makefile. (Συνιστούμε το Makefile επειδή εμφανίζεται ευδιάκριτα κοντά στην αρχή μιας λίστας καταλόγου, ακριβώς δίπλα σε άλλα σημαντικά αρχεία, όπως το README.) Το πρώτο όνομα που ελέγχεται, το GNUmakefile, δεν συνιστάται για τα περισσότερα makefile. Θα πρέπει να χρησιμοποιήσετε αυτό το όνομα εάν έχετε ένα makefile που είναι συγκεκριμένο για το GNU Make και δεν θα γίνει κατανοητό από άλλες εκδόσεις του make. Εάν το makefile είναι '-', η τυπική είσοδος διαβάζεται.

Το make ενημερώνει έναν στόχο εάν εξαρτάται από αρχεία προϋποθέσεων που έχουν τροποποιηθεί από τότε που ο στόχος ενημερώθηκε τελευταία φορά, ή εάν ο στόχος δεν υπάρχει.

ΕΠΙΛΟΓΕΣ

-b, -m

Αυτές οι επιλογές αγνοούνται για λόγους συμβατότητας με άλλες εκδόσεις του make.

-B, --always-make

Ενημερώνει άνευ όρων όλους τους στόχους.

-C dir, --directory=dir

Αλλάξτε στον κατάλογο dir πριν διαβάσετε τα makefile ή κάνετε οτιδήποτε άλλο. Εάν καθοριστούν πολλές επιλογές -C, καθεμία ερμηνεύεται σχετικά με την προηγούμενη: το -C / -C etc είναι ισοδύναμο με το -C /etc. Αυτό χρησιμοποιείται συνήθως με αναδρομικές κλήσεις του make.


-d   Εμφανίζει πληροφορίες εντοπισμού σφαλμάτων επιπλέον της κανονικής επεξεργασίας. Οι πληροφορίες εντοπισμού σφαλμάτων υποδεικνύουν ποια αρχεία εξετάζονται για επαναδημιουργία, ποιες χρονικές σφραγίδες αρχείων συγκρίνονται και με ποια αποτελέσματα, ποια αρχεία χρειάζεται πραγματικά να επαναδημιουργηθούν, ποιους υπόρροους κανόνες εξετάζει και ποιους εφαρμόζει—όλα τα ενδιαφέροντα σχετικά με τον τρόπο με τον οποίο το `make` αποφασίζει τι να κάνει.

--debug[=FLAGS]

Εμφανίζει πληροφορίες εντοπισμού σφαλμάτων επιπλέον της κανονικής επεξεργασίας. Εάν παραλειφθούν τα FLAGS, η συμπεριφορά είναι η ίδια με αυτή που θα είχε αν είχε καθοριστεί το -d. Τα FLAGS μπορούν να είναι οποιαδήποτε από τα ακόλουθα ονόματα, διαχωρισμένα με κόμμα ή κενό. Μόνο το πρώτο γράμμα είναι σημαντικό: το υπόλοιπο μπορεί να παραλειφθεί. Όλα για όλες τις εξόδους εντοπισμού σφαλμάτων (το ίδιο με τη χρήση του -d), basic για βασικό εντοπισμό σφαλμάτων, verbose για πιο λεπτομερή βασικό εντοπισμό σφαλμάτων, implicit για εμφάνιση των λειτουργιών αναζήτησης υπόρροων κανόνων, jobs για λεπτομέρειες σχετικά με την εκκίνηση εντολών, makefile για εντοπισμό σφαλμάτων κατά την επαναδημιουργία αρχείων makefile, print εμφανίζει όλες τις συνταγές που εκτελούνται, ακόμη και αν είναι σιωπηλές και why εμφανίζει τον λόγο για τον οποίο το make αποφάσισε να επαναδημιουργήσει κάθε στόχο. Χρησιμοποιήστε το none για να απενεργοποιήσετε όλες τις προηγούμενες σημαίες εντοπισμού σφαλμάτων.

-e, --environment-overrides

Δίνει στις μεταβλητές που λαμβάνονται από το περιβάλλον προτεραιότητα έναντι των μεταβλητών από τα αρχεία make.

-E string, --eval string

Ερμηνεύει τη συμβολοσειρά χρησιμοποιώντας τη συνάρτηση eval, πριν από την ανάλυση οποιουδήποτε αρχείου make.

-f file, --file=file, --makefile=FILE

Χρησιμοποιεί το αρχείο ως αρχείο make.

-i, --ignore-errors

Αγνοεί όλα τα σφάλματα στις εντολές που εκτελούνται για την επαναδημιουργία αρχείων.

-I dir, --include-dir=dir

Καθορίζει έναν κατάλογο dir για αναζήτηση αρχείων make που περιλαμβάνονται. Εάν χρησιμοποιηθούν πολλές επιλογές -I για την καθορισμό πολλών καταλόγων, οι κατάλογοι αναζητούνται με τη σειρά που καθορίζεται. Σε αντίθεση με τα ορίσματα σε άλλες σημαίες του make, οι κατάλογοι που δίνονται με τις σημαίες -I μπορούν να τοποθετηθούν απευθείας μετά τη σημαία: το -Idir επιτρέπεται, καθώς και το -I dir. Αυτή η σύνταξη επιτρέπεται για συμβατότητα με τη σημαία -I του προεπεξεργαστή C.

-j [jobs], --jobs[=jobs]

Καθορίζει τον αριθμό των εργασιών (εντολών) που θα εκτελούνται ταυτόχρονα. Εάν υπάρχει περισσότερη από μία επιλογή -j, η τελευταία ισχύει. Εάν η επιλογή -j δοθεί χωρίς όρισμα, το make δεν θα περιορίσει τον αριθμό των εργασιών που μπορούν να εκτελεστούν ταυτόχρονα.

--jobserver-style=style

Το στυλ του διακομιστή εργασιών που θα χρησιμοποιηθεί. Το στυλ μπορεί να είναι ένα από τα fifo, pipe ή sem (μόνο για Windows).

-k, --keep-going

Συνεχίζει όσο το δυνατόν περισσότερο μετά από ένα σφάλμα. Ενώ ο στόχος που απέτυχε και οι εξαρτήσεις του δεν μπορούν να επαναδημιουργηθούν, οι άλλες εξαρτήσεις αυτών των στόχων μπορούν να υποβληθούν σε επεξεργασία με τον ίδιο τρόπο.

-l [load], --load-average[=load]

Καθορίζει ότι δεν θα πρέπει να ξεκινήσουν νέες εργασίες (εντολές) εάν υπάρχουν άλλες εργασίες σε εξέλιξη και ο μέσος όρος φόρτου είναι τουλάχιστον load (ένας αριθμός κινητής υποδιαστολής). Χωρίς όρισμα, αφαιρεί μια προηγούμενη τιμή ορίου φόρτου.

-L, --check-symlink-times

Χρησιμοποιεί την πιο πρόσφατη χρονική σφραγίδα μεταξύ των συμβολικών συνδέσμων και του στόχου.

-n, --just-print, --dry-run, --recon

Εμφανίζει τις εντολές που θα εκτελούνταν, αλλά δεν τις εκτελεί (εκτός από ορισμένες περιπτώσεις).


-o file, --old-file=file, --assume-old=file
Μην επαναδημιουργείτε το αρχείο file, ακόμη και αν είναι παλαιότερο από τις εξαρτήσεις του, και μην επαναδημιουργείτε τίποτα λόγω αλλαγών στο αρχείο. Στην ουσία, το αρχείο αντιμετωπίζεται σαν να είναι πολύ παλιό και οι κανόνες του αγνοούνται.

-O[type], --output-sync[=type]
Όταν εκτελούνται πολλές εργασίες παράλληλα με το -j, διασφαλίστε ότι η έξοδος κάθε εργασίας συλλέγεται μαζί αντί να διασπείρεται με την έξοδο από άλλες εργασίες. Εάν το type δεν καθορίζεται ή είναι target, η έξοδος από ολόκληρη τη συνταγή για κάθε στόχο ομαδοποιείται μαζί. Εάν το type είναι line, η έξοδος από κάθε γραμμή εντολών μέσα σε μια συνταγή ομαδοποιείται μαζί. Εάν το type είναι recurse, η έξοδος από ολόκληρη την αναδρομική εκτέλεση του make ομαδοποιείται μαζί. Εάν το type είναι none, η συγχρονισμένη έξοδος απενεργοποιείται.

-p, --print-data-base
Εκτυπώστε τη βάση δεδομένων (κανόνες και τιμές μεταβλητών) που προκύπτουν από την ανάγνωση των αρχείων make. Στη συνέχεια, εκτελέστε κανονικά ή όπως καθορίζεται διαφορετικά. Αυτό επίσης εκτυπώνει τις πληροφορίες έκδοσης που παρέχονται από την επιλογή -v (δείτε παρακάτω). Για να εκτυπώσετε τη βάση δεδομένων χωρίς να προσπαθήσετε να επαναδημιουργήσετε αρχεία, χρησιμοποιήστε την εντολή make -p -f/dev/null.

-q, --question
Λειτουργία ``Ερώτηση''. Μην εκτελέσετε εντολές ή μην εκτυπώσετε τίποτα. Απλώς επιστρέψτε μια κατάσταση εξόδου που είναι μηδέν εάν οι καθορισμένοι στόχοι είναι ήδη ενημερωμένοι, διαφορετικά μη μηδέν.

-r, --no-builtin-rules
Καταργήστε τη χρήση των ενσωματωμένων έμμεσων κανόνων. Επίσης, καθαρίστε την προεπιλεγμένη λίστα των επιθημάτων για τους κανόνες επιθημάτων.

-R, --no-builtin-variables
Μην ορίσετε καμία ενσωματωμένη μεταβλητή.

-s, --silent, --quiet
Αθόρυβη λειτουργία. Μην εκτυπώνετε τις εντολές καθώς εκτελούνται.

--no-silent
Ακυρώστε την επίδραση της επιλογής -s.

-S, --no-keep-going, --stop
Ακυρώστε την επίδραση της επιλογής -k.

-t, --touch
Εφαρμόστε αλλαγές στα αρχεία (σημειώστε τα ως ενημερωμένα χωρίς να τα αλλάξετε πραγματικά) αντί να εκτελέσετε τις εντολές τους. Αυτό χρησιμοποιείται για να υποθέσουμε ότι οι εντολές έχουν εκτελεστεί, προκειμένου να εξαπατηθούν μελλοντικές εκτελέσεις της εντολής make.

--trace
Εκτυπώνονται πληροφορίες σχετικά με τη διάθεση κάθε στόχου (γιατί ο στόχος επαναδημιουργείται και ποιες εντολές εκτελούνται για να τον επαναδημιουργήσουν).

-v, --version
Εκτυπώστε την έκδοση του προγράμματος make, καθώς και μια δήλωση πνευματικών δικαιωμάτων, μια λίστα συγγραφέων και μια σημείωση ότι δεν υπάρχει καμία εγγύηση.

-w, --print-directory
Εκτυπώστε ένα μήνυμα που περιέχει τον τρέχοντα κατάλογο εργασίας πριν και μετά από άλλες επεξεργασίες. Αυτό μπορεί να είναι χρήσιμο για την ανίχνευση σφαλμάτων από περίπλοκες διαδοχικές εκτελέσεις της εντολής make.

--no-print-directory
Απενεργοποιήστε το -w, ακόμη και αν είχε ενεργοποιηθεί σιωπηρά.

--shuffle[=MODE]
Ενεργοποιήστε την αναδιάταξη της σειράς των στόχων και των απαιτήσεων. Το MODE είναι ένα από τα none για να απενεργοποιηθεί η λειτουργία αναδιάταξης, το random για να αναδιαταχθούν οι απαιτήσεις σε τυχαία σειρά, το reverse για να εξεταστούν οι απαιτήσεις σε αντίστροφη σειρά ή ένας ακέραιος <seed> που ενεργοποιεί τη λειτουργία τυχαίας επιλογής με μια συγκεκριμένη τιμή seed. Εάν το MODE παραλειφθεί, η προεπιλογή είναι random.

-W file, --what-if=file, --new-file=file, --assume-new=file
Υποθέστε ότι το αρχείο στόχος έχει μόλις τροποποιηθεί. Όταν χρησιμοποιείται με την επιλογή -n, αυτό σας δείχνει τι θα συνέβαινε εάν τροποποιούσατε αυτό το αρχείο. Χωρίς την επιλογή -n, είναι σχεδόν το ίδιο με την εκτέλεση μιας εντολής touch στο δεδομένο αρχείο πριν από την εκτέλεση της εντολής make, εκτός από το ότι η ώρα τροποποίησης αλλάζει μόνο στη φαντασία της εντολής make.

--warn-undefined-variables

Εμφάνιση προειδοποίησης όταν αναφέρεται μια μη ορισμένη μεταβλητή.

ΚΑΤΑΣΤΑΣΗ ΕΞΟΔΟΥ

Το GNU Make εξέρχεται με κατάσταση μηδέν εάν όλα τα αρχεία Makefile αναλύθηκαν με επιτυχία και καμία από τις κατασκευές που πραγματοποιήθηκαν δεν απέτυχε. Μια κατάσταση ενός θα επιστραφεί εάν χρησιμοποιήθηκε η σημαία -q και το make καθορίζει ότι ένας στόχος πρέπει να ανακατασκευαστεί. Μια κατάσταση δύο θα επιστραφεί εάν εντοπίστηκαν σφάλματα.

ΔΕΙΤΕ ΕΠΙΣΗΣ

Η πλήρης τεκμηρίωση για το make διατηρείται ως ένα εγχειρίδιο Texinfo. Εάν τα προγράμματα info και make είναι σωστά εγκατεστημένα στην τοποθεσία σας, η εντολή

info make

θα πρέπει να σας δώσει πρόσβαση στο πλήρες εγχειρίδιο.

ΣΦΑΛΜΑΤΑ

Δείτε το κεφάλαιο ``Προβλήματα και Σφάλματα\'\' στο Εγχειρίδιο GNU Make.

ΣΥΓΓΡΑΦΕΑΣ

Αυτή η σελίδα εγχειριδίου συνεισφέρθηκε από τον Dennis Morse του Πανεπιστημίου Stanford. Περαιτέρω ενημερώσεις συνεισφέρθηκαν από τον Mike Frysinger. Έχει αναδιαρθρωθεί από τον Roland McGrath. Συντηρείται από τον Paul Smith.

ΠΝΕΥΜΑΤΙΚΑ ΔΙΚΑΙΩΜΑΤΑ

Πνευματικά δικαιώματα © 1992-1993, 1996-2023 Free Software Foundation, Inc. Αυτό το αρχείο είναι μέρος του GNU Make.

Το GNU Make είναι ελεύθερο λογισμικό. Μπορείτε να το αναδιανείμετε και/ή να το τροποποιήσετε υπό τους όρους της Άδειας GNU General Public, όπως δημοσιεύθηκε από την Free Software Foundation. είτε την έκδοση 3 της Άδειας, είτε (κατά την επιλογή σας) οποιαδήποτε μεταγενέστερη έκδοση.

Το GNU Make διανέμεται με την ελπίδα ότι θα είναι χρήσιμο, αλλά ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ. ακόμα και χωρίς την σιωπηρή εγγύηση της εμπορευσιμότητας ή της καταλληλότητας για συγκεκριμένο σκοπό. Δείτε την Άδεια GNU General Public για περισσότερες λεπτομέρειες.

Θα έπρεπε να έχετε λάβει ένα αντίγραφο της Άδειας GNU General Public μαζί με αυτό το πρόγραμμα. Εάν όχι, δείτε το https://www.gnu.org/licenses/.