Description

La commande make permet de contrôler le compilateur lorsqu'un programme composé de plusieurs fichiers doit être compilé. Dans ce cas, make détecte les fichiers qui ont déjà été compilés et ne recompile que les fichiers modifiés depuis la dernière compilation.

Exemples

make s'utilise en définit un Makefile qui contient l'ensemble des directives relatives à la compilation du programme. Considérons un programme C composé des fichiers a.c et b.c ainsi que le fichier def.h comprenant les définitions de prototypes et les constantes. Ce programme peut se compiler avec la commande gcc-o prog a.c b.c def.h. Une alternative est d'utiliser make.

Un fichier Makefile comprend des blocs composé d'une cible, une liste de dépendances et un ou des programmes à exécuter. La cible par défaut

 all:  prog

Ce premier bloc indique que pour construire la cible all, c'est-à-dire la cible par défaut utilisée lorsque make est lancé sans argument, il faut en fait construire la cible progr.

 prog: a.o b.o 
       gcc -o prog a.o b.o

Ce second bloc indique que pour contruire le fichier prog, il faut d'abord examiner les fichiers a.o et b.o. Si ceux-ci sont à jour, il suffira d'exécuter gcc -o progr a.o b.o pour construire la cible prog. Sinon, il faudra d'abord construire les cibles a.o et b.o.

 a.o:  a.c def.h 
       gcc -c a.c

Ce bloc indique comment construire la cible a.o qui dépend des fichiers a.c et def.h. Le paramètre -c de gcc indique à gcc qu'il doit compiler a.c mais ne doit pas utiliser de linker.

 b.o:  b.c def.h
       cc -c b.c

Idem pour la cible b.c

 clean:
       rm a.o b.o     

Ce bloc est utile pour mettre de l'ordre. Il suffira d'exécuter make clean pour effacer les fichiers objets a.o et b.o qui seront devenus inutiles lorsque le programme prog sera terminé.

 tar:  
       tar czvf prog.tar.gz a.c b.c def.h

Ce dernier bloc permet de construire une archive .tar.gz reprenant l'ensemble des sources, utile lorsqu'il faut rendre un TP...

Informations complémentaires

Trucs et astuces