next up previous contents Next:  Combiner le tout. Up: Les projets en C Previous: Les projets en C   Table des matières  

23.4.1  Compléter notre exemple par un Makefile.

Notre première dépendance dans le processus pour compléter la compilation de mon_test concerne à la fois la bibliothèque libsimple_math.a et le fichier objet mon_test.o. Dans les termes propres à make, nous créons une ligne de Makefile comme ceci:

mon_test:    libsimple_math.a mon_test.o 


ce qui signifie simplement que les fichiers libsimple_math.a et mon_test.o doivent exister et être mis-à-jour avant mon_test. L'expression mon_test: est appelée la cible de make (make target). Au-dessous de cette ligne, nous devrons aussi déclarer comment construire mon_test:

         gcc -Wall -o $@ mon_test.o -L. -lsimple_math 


Le signe $@ désigne le nom de la cible elle-même, et donc il sera substituée par mon_test. Il est impératif de noter que l'espace avant gcc est une tabulation (et non une suite de huit espaces).

Ensuite, on sait que libsimple_math.a a une dépendance vis-à-vis de simple_math_sqrt.o et de simple_math_pow.o. Une fois de plus, nous avons une dépendance qui peut-être décrite avec un script de shell pour construire la cible:

libsimple_math.a: simple_math_sqrt.o simple_math_pow.o 
        rm -f $@ 
        ar rc $@ simple_math_sqrt.o simple_math_pow.o 
        ranlib $@ 


Notons que la marge à gauche est une seule tabulation (et nonune suite de huit espaces).

La dernière dépendance est celle des fichiers simple_math_sqrt.o et simple _math_pow.o qui dépendent de simple_math_sqrt.c et simple_math.pow_c, respectivement. Ceci requiert deux règles de make. Cependant, make présente un raccourci qui fonctionne dans le cas de nombreux fichiers sources C:

.c.o: 
        gcc -Wall -c -o $*.o $< 


Ceci signifie que tous les fichiers .o doivent être construits à partir des fichiers .c du même nom au moyen de la commande gcc -Wall -c -o $*.o $<, où $*.o désigne le nom du fichier object et $< le nom du fichier dont dépend $*.o et ce, séquentiellement, pour tous les fichiers impliqués. [NdT: cette notation .c.o est aujourd'hui remplacée par %.o:      %.c (où l'espacement entre le signe : et % est une tabulation)].


next up previous contents Next:  Combiner le tout. Up: Les projets en C Previous: Les projets en C   Table des matières  
1-01-2006