Lo scopo dell'utilità make è determinare automaticamente quali parti di un programma di grandi dimensioni devono essere ricompilate e inviare i comandi per ricompilarle. Il manuale descrive l'implementazione GNU di make, che è stata scritta da Richard Stallman e Roland McGrath. Questi esempi mostrano i programmi C poiché sono più comuni, ma è possibile utilizzare make con qualsiasi linguaggio di programmazione il cui compilatore può essere eseguito con un comando shell. In effetti, make non è limitato ai programmi. Puoi usarlo per descrivere qualsiasi attività in cui alcuni file devono essere aggiornati automaticamente da altri ogni volta che gli altri cambiano.
Nota: Questa pagina è un estratto della documentazione di GNU make . Viene aggiornato solo occasionalmente perché il progetto GNU non usa nroff. Per la documentazione completa e aggiornata, fare riferimento al file info make.info creato dal file di origine Texinfo make.texinfo.
Sintassi e preparazione di make utility
rendere -f makefile opzione … bersaglio …
Per prepararti a utilizzare make, devi scrivere un file chiamato makefile che descrive le relazioni tra i file nel tuo programma e indica i comandi per aggiornare ogni file. In genere un file eseguibile viene aggiornato dai file oggetto, che a loro volta vengono compilati compilando i file sorgente.
Una volta che esiste un makefile adatto, ogni volta che modifichi alcuni file sorgente questo semplice comando di shell rendere è sufficiente eseguire tutte le necessarie ricompilazioni. Il programma make utilizza la base dati makefile e i tempi di ultima modifica dei file per decidere quali file devono essere aggiornati. Per ognuno di questi file, emette i comandi registrati nel database.
L'utility make esegue i comandi nel makefile per aggiornare uno o più nomi di destinazione, dove nome è in genere un programma. Se no-f l'opzione è presente, make cercherà i makefileGNUmakefile, makefile, eMakefile, in questo ordine.
Normalmente dovresti chiamare il tuo makefile makefile o Makefile. (Si consiglia di usare Makefile perché appare in modo prominente vicino all'inizio di un elenco di directory, proprio vicino ad altri file importanti comeLEGGIMI.) Il primo nome verificato, GNUmakefile, non è raccomandato per la maggior parte dei makefile. Dovresti usare questo nome se hai un makefile specifico per GNU make e non sarà compreso da altre versioni di make. Se makefile è -, lo standard input viene letto.
Il rendere l'utilità aggiorna un obiettivo se dipende dai file prerequisiti che sono stati modificati dall'ultima modifica del target o se il target non esiste.
Opzioni
Il -b e -m le opzioni sono ignorate per compatibilità con altre versioni di make.
-C dir cambierà in directory directory prima di leggere i makefile o fare qualsiasi altra cosa. Se multiplo-C le opzioni sono specificate, ognuna è interpretata rispetto alla precedente:-C/ -C ecc è equivalente a-C / ecc. Questo viene in genere utilizzato con invocazioni ricorsive di make.
Il -d l'opzione stamperà le informazioni di debug oltre all'elaborazione normale. Le informazioni di debug indicano quali file vengono presi in considerazione per il remake, quali tempi di file vengono confrontati e quali risultati, quali file devono essere effettivamente rifatti, quali regole implicite sono considerate e quali sono applicate - tutto interessante su come make decide cosa fare .
Il -e l'opzione fornisce alle variabili prese dall'ambiente la precedenza sulle variabili dai makefile.
Il -f file opzione usa file come un makefile.
Il -io l'opzione ignora tutti gli errori nei comandi eseguiti per il remake dei file.
Il -IO dir opzione specifica una directory dir per cercare i makefile inclusi. Se diversi-IO le opzioni vengono utilizzate per specificare più directory, le directory vengono ricercate nell'ordine specificato. A differenza degli argomenti ad altre flag di make, le directory fornite con-IO le bandiere possono arrivare direttamente dopo la bandiera:-Idir è permesso, così come-I dir . Questa sintassi è consentita per compatibilità con il preprocessore C-IO bandiera.
Il -j lavori opzione specifica il numero di lavori (comandi) da eseguire simultaneamente. Se ce n'è più di uno-j opzione, l'ultima è efficace. Se la-j l'opzione è data senza argomento, make non limiterà il numero di lavori che possono essere eseguiti contemporaneamente.
Il -K l'opzione continua il più possibile dopo un errore; mentre il bersaglio che ha fallito, e quelli che dipendono da esso, non possono essere rifatti, le altre dipendenze di questi bersagli possono essere elaborate tutte uguali.
Il -l e -l carico le opzioni specificano che non devono essere avviati nuovi lavori (comandi) se sono in esecuzione altri lavori e almeno il carico mediocaricare (un numero in virgola mobile). Senza argomenti, rimuove un limite di carico precedente.
Il -n opzione stampa i comandi che verrebbero eseguiti, ma non li esegue.
Il -o file l'opzione non rifà il file anche se è più vecchio delle sue dipendenze, e non rifare nulla a causa di cambiamenti in file . Essenzialmente il file viene trattato come molto vecchio e le sue regole vengono ignorate.
Il -p opzione stampa il database (regole e valori variabili) che risulta dalla lettura dei makefile. Esegue quindi come al solito o come diversamente specificato.Questo stampa anche le informazioni sulla versione fornite dal-v interruttore (vedi sotto). Per stampare il database senza provare a rifare i file, utilizzarerendere -p -f / dev / null .
Il -q l'opzione imposta la modalità domanda. Non eseguire comandi o stampare nulla, basta restituire uno stato di uscita che è zero se i target specificati sono già aggiornati, altrimenti diverso da zero.
Il -r opzione elimina l'uso delle regole implicite incorporate. Cancella anche l'elenco predefinito di suffissi per le regole dei suffissi.
Il -S l'opzione silenzia l'operazione. Non stampa i comandi mentre vengono eseguiti.
Il -S opzione annulla l'effetto del-K opzione. Questo non è mai necessario se non in una marca ricorsiva dove-K potrebbe essere ereditato dal make di livello superiore tramite MAKEFLAGS o se si imposta-K in MAKEFLAGS nel tuo ambiente.
Il -t l'opzione tocca i file (li contrassegna aggiornati senza realmente cambiarli) invece di eseguire i loro comandi. Questo è usato per far finta che i comandi siano stati fatti, per ingannare le future invocazioni di make.
Il -v l'opzione stampa la versione del programma di produzione più un copyright, un elenco di autori e un avviso che non vi è alcuna garanzia.
Il -w opzione stampa un messaggio contenente la directory di lavoro prima e dopo altre elaborazioni. Questo può essere utile per rintracciare gli errori da nidi complicati di marca ricorsiva comandi.
Il -W file opzione finge che il bersaglio file è appena stato modificato Se usato con-n flag, questo ti mostra cosa succederebbe se tu modificassi quel file. Senza-n, è quasi lo stesso di eseguire atoccare comando sul file dato prima di eseguire make, tranne che il tempo di modifica è cambiato solo nell'immaginazione di make.




