Page personnelle :
~ Christophe Genolini ~

Mes DOCs
Guitar
Mini QCM


Coups de gueule :
8 heures par semaine
Alter Mondialistes




Page officielle :
~ Christophe Genolini ~

Christophe Genolini - Memo Makefile

Plan

1 Généralité

Exemple :
Toto.ps : Toto.dvi
        dvips Toto.dvi -o Toto.ps

Toto.dvi : Toto.tex Toto.toc \
        dessin.eps dessin2.eps          
        latex Toto.tex
Commentaires
Le Toto.ps de la première ligne est le fichier but, celui qui doit être contruit.

Après le : de la première ligne se trouve la liste des fichiers necéssaires à la construction du fichier but.

La deuxième ligne et les suivantes éventuelles donnent la procédure à utiliser pour construire le fichier but. Attention, elles doivent toujours commencer par une tabulation.

S'il y a beaucoup de fichiers après les :, on peut les mettre sur deux lignes, avec un \ à la fin de la première ligne.

2 Quelques options

   Par defaut, seul le premier fichier rencontré est construit. all : permet d'en construire plusieurs :

all : these.ps thesis.ps

Si on a besoin que le makefile du répertoire ./../chapitre1 soit exécuté, on utilise :

makeRepertoire : 
        make -C ./../chapitre1 

3 Constructions génériques

Exemple :
NOM=$(wildcard *.tex)

all : $(NOM:.tex=.eps)

%.dvi : %.tex
        latex $<
        rm $(@:.dvi=.aux)
        rm $(@:.dvi=.log)

%.eps : %.dvi
        dvips $< -o $@ 
Commentaires :
Dans cet exemple, NOM est une variable. Elle correspond a *.tex(* se dit wildcard).

$(NOM:.tex=.eps) signifie : variable NOM dans laquelle .tex est remplacé par .eps.

Donc, la ligne all : $(NOM:.tex=.eps) signifie : make doit construire un fichiers .eps pour chaque fichier .tex existant.

%.dvi : %.tex donne la méthode générique pour construire les .dvi à partir des .tex.

Dans dvips $< -o $@, $< indique le nom du fichier situé après les : (dans notre exemple, .dvi). Si plusieurs fichiers sont présents, $<désigne le premier d'entre eux. $@ est le nom du fichier situé avant les :(dans notre exemple, .eps)

Fin