mon premier tout Makefile

pour générer une présentation avec pandoc

Un Makefile peut servir à bien plus de choses que de compiler un programme.

Lorsque je préparais une présentation avec pandoc, je révisais fréquemment le pdf généré pour valider la mise en forme. Puisque je suis paresseux et que je ne veux pas retaper à chaque fois la commande et tous les arguments, j’ai saisi l’occasion pour écrire mon tout premier Makefile!

Comme toujours la documentation de OpenBSD est très claire et j’y ai trouvé toute l’information nécessaire.

$ man make

Voici mon tout premier Makefile qui fonctionne avec le make BSD mais pas la variante GNU sur linux par exemple.

PANDOC=pandoc
PANDOCFLAGS=-t beamer -V colorlinks -V urlcolor=NavyBlue -V linkcolor=White

.SUFFIXES: .md .pdf
.md.pdf:
        ${PANDOC} ${PANDOCFLAGS} $< -o $@

.MAIN: semis-conf.pdf

Quand je tape make, pandoc génère automatiquement un diaporama pdf à partir d’un fichier markdown et les options pour pdflatex.

$ make
pandoc -t beamer -V colorlinks -V urlcolor=NavyBlue -V linkcolor=White semis-conf.md -o semis-conf.pdf

Décortiquons le Makefile:

La cible .SUFFIXES déclare l’existence d’une relation implicite entre les extensions .md et .pdf

La cible .md.pdf définit les commandes à exécuter lorsqu’on demande à make de produire un fichier .pdf (par exemple make présentation.pdf).

La variable $< fait référence au nom de fichier .md par inférence du même nom que le fichier .pdf

La variable $@ correspond à l’argument donné à make, comme dans tout script shell.

La cible .MAIN définit le nom du .pdf à générer si aucun argument n’est donné à make.