A. Djebali Rappels sur Makefile
1
Rappel sur Makefile
1.2. Compilation séparée
Avantages :
- la programmation est modulaire ; - Plus de lisibilité ;
- la maintenance facile.
-
Commande make : La compilation séparée, sous unix, se fait avec la commande make.
Elle permet :
- permet de ne recompiler que le code modifié, - d’accéder aux commandes shell. ,
- d’utiliser macro-commandes et des variables.
1.3. Mise en oeuvre
La commande make utilise un fichier nommé Makefile.
Le fichier Makefile indique à la commande make comment exécuter les commandes nécessaires.
Les instructions contenues dans ce fichier doivent respecter une syntaxe particulière expliquée ci-après.
2. Cible et Règles
2.1. Règles
Les fichiers Makefile sont structurés grâce aux règles ; ce sont elles qui définissent ce qui doit être exécuté et qui permettent de compiler un programme.
règles : est une suite d’instructions qui seront exécutées pour construire une cible.
La syntaxe d’une règle est la suivante :
cible : dépendances commandes
L’espace avant commandes est obligatoire et doit être fait avec une tabulation.
2.2. Cible
La cible est généralement le nom d’un fichier qui va être généré par les commandes qui vont suivre.
A. Djebali Rappels sur Makefile
2 2.3. Dépendances
Les dépendances sont les fichiers ou les règles nécessaires à la création de la cible. Par exemple, pour la compilation C, les dépendances peuvent contenir un fichier d’en-tête ou un fichier source ;
2.4.Commandes
Les commandes sont des commandes shell qui seront exécutées au moment de la construction de la cible. La tabulation avant les commandes est obligatoire et si la commande dépasse une ligne, il est nécessaire de signaler la fin de ligne avec un caractère antislash "\".
3. Un exemple de fichier Makefile
# Exemplaire de commentaire Mon premier Makefile princ: princ.o ajout.o modif.o efface.o
gcc -o princ princ.o ajout.o modif.o efface.o -lm tri_tas.o: tri_tas.c
gcc -Wall -c tri_tas.c efface.o: efface.c
gcc -Wall -c efface.c princ.o: princ.c
gcc -Wall -c princ.c ajout.o: ajout.c
gcc -Wall -c ajout.c modif.o: modif.c
gcc -Wall -c modif.c
clean:
rm *.o
tabulation !!
Effacer les fichiers temporaires
On a souvent besoin de recompiler tous les ‘sources’, ou de nettoyer le répertoire de travail.
Au lieu de lancer, à chaque fois, des rm, il est possible de le faire faire à make..
Pour effacer les fichiers objets du projet, il suffit de d'écrire la règle suivante qui s'appelle clean par convention :
clean:
rm *.o