Les fichiers Makefile reposent sur la commande make
très répandue afin de traiter une entrée en une sortie.
.POSIX: cible: dépendances commandes shell % L’indentation par tabulation est indispensable
Un fichier makefile basique est composé de 4 éléments : une « cible » à produire – fonction ou nom de fichier –, des dépendances et les commandes. Chaque « règle » permet ainsi d’expliciter une arborescence de « cibles » avec les sorties en extrémité. L’arborescence entière est mise en mémoire avant son exécution de manière à rendre le processus indépendant de l’ordre des règles, par défaut la première cible est implicite lorsqu’aucune cible n’est désignée explicitement. Selon la spécification standard,la première ligne doit être .POSIX:
de sorte à avoir un comportement prévisible.
La commande make
utilise un lot de règles implicites par défaut, ajouter .SUFFIXES
en en-tête permet de les écraser. Chaque ligne est indépendante ; attention aux cd
.
À la manière de git[1], make est capable de détecter la modification d’un fichier et ne créera que les éléments qui en dépendent. Ce fonctionnement explique la convention de définir une cible all
de manière à pouvoir utiliser la commande make all
et reconstruire l’ensemble d’un projet. De la même manière, une cible clean
est généralement utilisée comme alias de rm
de sorte à supprimer les fichiers intermédiaires via make clean
.
Toujours par convention, il est d’usage de créer des cibles install
et uninstall
avec les macros PREFIX
et DESTDIR
pour installer un programme et ses composants.
Des macros peuvent être définis en amont pour être réutilisés plusieurs fois dans un fichier. Par convention, ces variables sont définies en entête de document pour être appelés par la suite via de $(…).
CC=cc $(CC)
=> [1] Système git, LeJun 2022 This content has been proxied by September (3851b).Proxy Information
text/gemini;