Come realizzare un MakeFile
Sep
20090
In generale quando si ha a che fare con progetti software in C o C++ con un gran numero di file, invece di essere costretti a compilare singolarmente e manualmente ogni file, è possibile utilizzare un’ utility chiamata Make.
Di fatto si tratta di un file di testo con una struttura ben definita che serve da input all’ eseguibile make.exe per compilare, linkare e realizzare l’eseguibile finale del progetto. Una peculiarità di questa utility sta nel fatto che va a controllare anche se un file è stato modificato dall’ ultima compilazione effettuata , in tal caso lo ricompila se no lo linka semplicemente. Questo chiaramente comporta una risparmio di tempo non indifferente se il numero complessivo di file del progetto è molto elevato.

Ma andiamo a osservare la struttura di un MakeFile:
Un MakeFile ha una struttura ben definita del tipo:
target : prerequisiti ... comandi
dove target è solitamente il nome del file generato da un programma, esempi di target sono i file eseguibili o i file oggetto. Il prerequisito è un file usato come input per creare il target (un target spesso dipende da diversi file). Un comando è una azione da eseguire. Una regola può avere più comandi, ciascuno su una riga diversa.
Un esempio di makefile è il seguente :
test : main.o file.o cc -o test main.o file.o main.o : main.c def.h cc -c main.c file.o : file.c def.h cc -c file.c
Si produrrà il file eseguibile test a partire dai file C main.c e file.c e dal file header def.h. Il file target test avrà come prerequisiti i due file main.o e file.o, e il comando, azione da eseguire per ottenere il file target, sarà cc -o test main.o file.o. Analogamente il file target main.o avrà come prerequisiti i due file main.c e def.h. Il comando, azione da eseguire per ottenere il file target, sarà cc -c main.c , eccetera.
Una volta creato il makefile si usa il comando make per compilare il file (o i file) C e produrre l’eseguibile test.exe
E’ importante che il MakeFile sia nella stessa cartella in cui si trovi l’eseguibile make.exe . In caso contrario bisogna inserire anche il path del makefile nella chiamata di make .











Commenti