Make
Make : présentation vite fait
La définition de GNU.org donne:
GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files.
Il s'agit d'un outil que l'on rencontre souvent et qui tend à être de moins en moins utilisé malgré sa simplicité. Pour le dire plus simplement, Make sert principalement à compiler et installer des programmes; il orchestre des tâches selon des dépendences, exécute des commandes pour générer des fichiers et les garder à jour de façon efficace.
Il a pour lui:
- D'exister sur tous les OS ou presque
- De gérer les dépendances, les valeurs par défaut
- De ne pas peser bien lourd,
- etc
Utilisation simple
L'exemple donné dans la sources utilise make pour générer les fichiers d'alias, access et autres dans Postfix. Il s'agit de fichiers de conf que l'on écrit et que l'on compile dans un format particulier (le Berkeley DB, en .db).
On va pouvoir utiliser un makefile pour le faire automatiquement; chacun de nos fichier .db sera une target de notre makefile. Le makefile contient des règles pour créer nos targets.
L'exemple de make donné dans ma source est:
.PHONY: reload all: aliases.db access.db virtual.db reload aliases.db: aliases postalias aliases access.db: access postmap access virtual.db: virtual postmap virtual reload: postfix reload
Le fichier doit être nommé "makefile" ou "Makefile" .
Explication:
- .PHONY : On déclare ici quelles targets sont "phony" (comme dans "faux" ou "bidon" en français) : il s'agit de cibles qui ne vont pas réellement générer des fichiers. On déclare "reload" comme étant phony : on ne cherche pas à générer un fichier qui s'appellerait "reload", et même si il y'a un fichier nommé ainsi on n'en tiens pas compte.
- all : all est une règle particulière, appellée avec la commande "make all" (ou juste "make", all est la règle par défaut). Ici on déclare que make doit exécuter les règles citées, dans l'ordre.
- aliases.db: aliases : Ici, on dit que le fichier "aliases.db" dépend du fichier "aliases". Si aliases.db n'existe pas ou que aliases est plus récent que lui, le fichier aliases.db sera généré avec la commande donnée en dessous.
- postalias aliases : Il s'agit de la commande utilisée pour générer le fichier aliases.db.
Le même schéma est utilisé pour les 2 autres fichiers .db.
- reload : Déclare la target reload. Cette target pourra être appellée avec la commande "make reload"
- postfix reload : commande exécutée par la target reload.