make

Da Wikipedia, l'enciclopedia libera.
bussola Disambiguazione – Se stai cercando altri significati, vedi Make (disambigua).
make
Sviluppatore Stuart Feldman
Ultima versione 4.0 (9 ottobre 2013)
Sistema operativo Unix-like
Linguaggio
Genere Automazione dello sviluppo
Licenza GNU General Public License
(Licenza libera)
Sito web www.gnu.org/software/make

Il make è un'utility, sviluppata sui sistemi operativi della famiglia UNIX, ma disponibile su un'ampia gamma di sistemi, che automatizza il processo di creazione di file che dipendono da altri file, risolvendo le dipendenze e invocando programmi esterni per il lavoro necessario.

La gestione delle dipendenze in make è molto semplice, e si basa sulla data e ora di ultima modifica dei file interessati.

L'utility è usata soprattutto per la compilazione di codice sorgente in codice oggetto, unendo e poi linkando il codice oggetto in programmi eseguibili o in librerie. Esso usa file chiamati makefile per determinare il grafo delle dipendenze per un particolare output, e gli script necessari per la compilazione da passare alla shell. Il termine makefile deriva dal nome dato tipicamente al file di input di make.

Struttura di un makefile[modifica | modifica wikitesto]

Un makefile consiste in linee di testo che definiscono un file (o un gruppo di file) oppure il nome di una regola dipendente dal gruppo di file. I file generati sono contrassegnati come i loro file sorgenti, mentre i file sorgenti sono contrassegnati a seconda dei file inclusi internamente. Dopo che ogni dipendenza è dichiarata, può seguire una serie di linee indentate (da tabulazioni) che definiscono come trasformare i file di ingresso nei file d'uscita, se il primo è stato modificato più di recente rispetto al secondo. Nel caso in cui tali definizioni sono presenti, queste sono riferite a dei script di compilazione e sono passate alla shell per generare i file target.

La struttura base è:

# I commenti usano il cancelletto
target: dipendenze
	comando 1
	comando 2
	   .
	   .
	   .
	comando n

Un makefile può anche contenere definizioni di variabili e inclusioni di altri makefile. Le variabili nei makefile possono essere sovrascritte dagli argomenti passati all'utility make dalla riga di comando. Questo permette all'utente di specificare differenti comportamenti degli script di compilazione e come invocare i programmi oltre ad altre cose. Per esempio la variabile "CC" è frequentemente usata nei makefile per riferirsi al compilatore C e l'utente potrebbe fornire una alternativa al compilatore da usare.

Esempio di un makefile[modifica | modifica wikitesto]

Sotto è riportato un esempio di un makefile che compila un sorgente chiamato "helloworld.c" usando cc, un compilatore C. Il tag PHONY è un tecnicismo che dice al make che un particolare nome di target non produce un file. I simboli $@ e $< sono due di quelle che sono chiamate variabili automatiche e rappresentano il nome del target. Ci sono altre variabili automatiche.

Si noti che nel target "clean", un meno precede nel comando, dicendo al make di ignorare gli errori durante l'esecuzione del comando; make normalmente esce se l'esecuzione di un comando fallisce in qualsiasi punto. Nel caso del target di pulizia, chiamato tipicamente "clean", si vuole rimuovere ogni file generato nel processo di compilazione, senza uscire se i file da cancellare non esistono. Con l'aggiunta del tag PHONY al clean, si previene che make si aspetti un file dal target. In questo particolare caso, il prefisso meno nel comando è ridondante e in casi comuni, l'opzione -f o "force" aggiunta a rm previene che rm esca a causa della non esistenza di un file.

helloworld: helloworld.o
        cc -o $@ $<
 
helloworld.o: helloworld.c
        cc -c -o $@ $<
 
.PHONY: clean
clean:
        -rm -f helloworld helloworld.o

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]


Software libero Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero