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

Rispondere a