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
.
Par Philippe St-Jacques