Make - εντολή Linux - εντολή Unix

make - Η GNU κάνει τη χρησιμότητά της να διατηρεί ομάδες προγραμμάτων

Σύνοψη

κάντε [ -f makefile ] [επιλογή] ... στόχος ...

Προειδοποίηση

Αυτή η σελίδα είναι ένα απόσπασμα της τεκμηρίωσης της δημιουργίας του GNU. Ενημερώνεται μόνο περιστασιακά επειδή το έργο GNU δεν χρησιμοποιεί nroff. Για πλήρη, τρέχουσα τεκμηρίωση, ανατρέξτε στο αρχείο πληροφοριών make.info που γίνεται από το αρχείο source texinfo make.texinfo .

Περιγραφή

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

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

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

φτιαχνω, κανω

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

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

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

να ενημερώσετε έναν στόχο εάν εξαρτάται από τα απαραίτητα αρχεία που έχουν τροποποιηθεί από την τελευταία τροποποίηση του στόχου ή αν ο στόχος δεν υπάρχει.

ΕΠΙΛΟΓΕΣ

-σι

-m

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

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

-ρε

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

-μι

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

-f αρχείο

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

-Εγώ

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

- Εγώ

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

-j θέσεις εργασίας

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

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

-μεγάλο

-l φορτίο

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

Εκτυπώστε τις εντολές που θα εκτελεστούν, αλλά μην τις εκτελέσετε.

-ένα αρχείο

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

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

-q

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

-r

Εξαλείψτε τη χρήση των ενσωματωμένων κανόνων. Επίσης, καταργήστε την προεπιλεγμένη λίστα των επιθημάτων για τους κανόνες κατάληξης.

-μικρό

Αθόρυβη λειτουργία. μην εκτυπώνετε τις εντολές καθώς εκτελούνται.

-ΜΙΚΡΟ

Ακυρώστε την επίδραση της επιλογής -k . Αυτό δεν είναι ποτέ απαραίτητο εκτός από μια αναδρομική μάρκα όπου -k μπορεί να κληρονομηθεί από το κορυφαίο make μέσω MAKEFLAGS ή αν ορίσετε -k στο MAKEFLAGS στο περιβάλλον σας.

-t

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

-v

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

-w

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

-W αρχείο

Προκαλέστε ότι το αρχείο στόχου έχει μόλις τροποποιηθεί. Όταν χρησιμοποιείται με τη σημαία -n , αυτό σας δείχνει τι θα συνέβαινε αν επρόκειτο να τροποποιήσετε αυτό το αρχείο. Χωρίς -n , είναι σχεδόν το ίδιο με την εκτέλεση μιας εντολής αφής στο δεδομένο αρχείο πριν από την εκτέλεση του make , εκτός από το ότι ο χρόνος τροποποίησης αλλάζει μόνο στη φαντασία του make .