--- title: Make - UNIX --- # Make - UNIX 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 shell fait tous les traitements qui y sont indiqués](../images/Shell.gif) Un make ne fait que les traitements qui sont nécessaires. ![Un make ne fait que les traitements qui sont nécessaires](../images/Make.gif) ## Syntaxe Le fichier `Makefile` contient les règles de dépendance. Une règle est de la forme : ```make 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` : ```make # 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). ## Références - <https://www.gnu.org/savannah-checkouts/gnu/make/manual/make.html> Make Manual - <https://make.mad-scientist.net/> GNU Make - <https://tech.davis-hansson.com/p/make/> Pour les spécialistes [Précédent](../sed/tp.md) - [Suivant](./tp.md)