GNU Make est un héritier de make
, mais sous Linux, c'est bien GNU Make qui est installé.
Make permet de gagner du temps par rapport aux shells: on n'exécute que ce qui est nécessaire, en fonction des changements de source par rapport à leur cible.
Un shell fait tous les traitements qui y sont indiqués.
Un make ne fait que les traitements qui sont nécessaires.
Le fichier Makefile
contient les règles de dépendance.
Une règle est de la forme :
cible: [fichier de départ] ... commande
⚠ La commande doit être précédée d'une tabulation!
Pour créer le fichier cible : make cible
Exemple de fichier Makefile
:
# Commentaire compte.txt: aCompter.txt wc -l < aCompter.txt > compte.txt
La deuxième fois qu'on lance la cible compte.txt
, la commande wc
n'est pas exécutée, sauf si le fichier aCompter.txt
a une date de modification plus récente que celle de compte.txt
.
Une règle qui ne dépend d'aucun fichier de départ peut exister.
De plus, elle ne peut donner lieu à la création d'un fichier.
Une telle règle sera toujours exécutée (à condition que son nom ne soit pas celui d'un fichier).