Germano wrote:
>
> Il makefile � "soltanto" un file in cui ci sono delle istruzioni in un
> formato apparentemente incomprensibile che vengono eseguito dal comando make;
> questo comporta un notevole risparmio di tempo e riduce il rischio di errorri
> in fase di compilazione e linking.
Non e` cosi` complicato :-)
Ha una struttura abbastanza semplice. Lo schema base e`:
dichiarazione di variabili
obiettivo1: oggetti da cui dipende
<tab> azione per realizzare obiettivo1
....
obiettivoN: oggetti da cui dipende
<tab> azione per realizzare obiettivoN
il comando "make" realizza il primo obiettivo della lista,
"make nome-obiettivo" ne realizza uno a scelta.
Vediamo un esempio
SUB= subroutine1.o subroutine2.o
programma: main.o $SUB
gcc -o programma main.o $SUB
install: programma
cp programma /usr/local/bin/programma
risultati: programma dati
programma < dati > risultati
---------
Se lancio "make install", make
- controlla se esiste programma, se e` piu` recente dei file.o
da cui dipende e se questi sono piu` recenti dei rispettivi
file.c (quest'ultima dipendenza e` implicita)
- fa tutte (e sole) le operazioni necessarie per aggiornare tutto
- installa il programma
"make risultati" controlla se non hai cambiato dati o programma
o, in cascata, gli oggetti da cui dipende programma
dall'ultima volta che hai calcolato i risultati e eventualmente
riallinea tutto e ti calcola risultati.
Se tutto e` allineato come date, ti risponde che non c'e`
niente da aggiornare.
Semplice ma geniale :-)
Lo si potrebbe definire un prototipo (con 20 anni di
anticipo) della programmazione ad oggetti.
ciao, andrea