OVH Cloud OVH Cloud

Makefile et circular dependency

3 réponses
Avatar
Thomas vO
bonjour,

j'essaie de faire un Makefile relativement générique pour (pdf)LaTeX
(qui fonctionne avec le make de GNU).

j'ai donc mis des variables contenant les images :

### figures à convertir de l'EPS en PDF
ALL_EPS = \
logo.pdf
### figures à convertir depuis pdflatex en EPS
ALL_PDF = \
logo.eps
ALL_JPG = \
dsotm.jpg

pour lesquels j'ai mis les règles suivantes :

### un .eps dépend d'un .pdf, d'un .jpg ou d'un .png
%.eps: %.pdf ${ALL_PDF}
${PDF2EPS} $<

%.eps: %.jpg ${ALL_JPG}
convert $< $(patsubst %.jpg,%.eps,$<)

%.eps: %.png ${ALL_PNG}
convert $< $(patsubst %.png,%.eps,$<)

### Conversion des images pour le PDF
### ou d'un eps (+ conversion)
%.pdf: %.eps ${ALL_EPS}
${EPS2PDF} -o=$(patsubst %.eps,%.pdf,$<) $<

et bien évidemment, j'ai des dépendances circulaires... est-ce qu'il
existe un moyen d'arrêter ce cercle (vicieux) ?

--
Thomas vO - <http://perso.enstimac.fr/~vanouden/>

3 réponses

Avatar
Pascal Bourguignon
Thomas vO writes:

bonjour,

j'essaie de faire un Makefile relativement générique pour (pdf)LaTeX
(qui fonctionne avec le make de GNU).

j'ai donc mis des variables contenant les images :

### figures à convertir de l'EPS en PDF
ALL_EPS =
logo.pdf
### figures à convertir depuis pdflatex en EPS
ALL_PDF =
logo.eps
ALL_JPG =
dsotm.jpg

pour lesquels j'ai mis les règles suivantes :

### un .eps dépend d'un .pdf, d'un .jpg ou d'un .png
%.eps: %.pdf ${ALL_PDF}
${PDF2EPS} $<

%.eps: %.jpg ${ALL_JPG}
convert $< $(patsubst %.jpg,%.eps,$<)

%.eps: %.png ${ALL_PNG}
convert $< $(patsubst %.png,%.eps,$<)

### Conversion des images pour le PDF
### ou d'un eps (+ conversion)
%.pdf: %.eps ${ALL_EPS}
${EPS2PDF} -o=$(patsubst %.eps,%.pdf,$<) $<

et bien évidemment, j'ai des dépendances circulaires... est-ce qu'il
existe un moyen d'arrêter ce cercle (vicieux) ?


Si tu veux le faire avec des règles générique, il faudra utiliser des
extensions différentes.

%.eps: %.in.pdf
%.out.pdf: %.eps

Sinon, supprimer une de ces règles générale, ce qui n'empêche pas d'écrire:

toto.eps:titi.pdf
${PDF2EPS} $< $@

toto.pdf:toto.eps # ici on utilise la règle générale.

--
__Pascal Bourguignon__ http://www.informatimago.com/

ATTENTION: Despite any other listing of product contents found
herein, the consumer is advised that, in actuality, this product
consists of 99.9999999999% empty space.

Avatar
Thomas vO
À (at) Thu, 04 May 2006 17:19:07 +0200,
Pascal Bourguignon nous disait (told us):
Thomas vO writes:
et bien évidemment, j'ai des dépendances circulaires... est-ce
qu'il existe un moyen d'arrêter ce cercle (vicieux) ?


Si tu veux le faire avec des règles générique, il faudra utiliser des
extensions différentes.

%.eps: %.in.pdf
%.out.pdf: %.eps


merci.
j'ai donc fait ça :

### figures à convertir de l'EPS en PDF
ALL_EPS =
logo.out.pdf

### figures à convertir depuis pdflatex en EPS
ALL_PDF =
logo.out.eps

et ça :

### Conversion des images pour le PS
### un .eps dépend d'un .pdf
%.out.eps: %.in.pdf ${ALL_PDF}
@${PDF2EPS} $< $(patsubst %.in.pdf,%.out.eps,$<)

### Conversion des images pour le PDF
### un .pdf dépend d'un .eps
%.out.pdf: %.in.eps ${ALL_EPS}
@${EPS2PDF} -o=$(patsubst %.in.eps,%.out.pdf,$<) $<

et toujours la même erreur :
[gmake] gmake pdf
gmake: Circular logo.out.pdf <- logo.out.pdf dependency dropped.

qu'est-ce que j'ai raté ??

--
Thomas vO - <http://perso.enstimac.fr/~vanouden/>


Avatar
Pascal Bourguignon
Thomas vO writes:

À (at) Thu, 04 May 2006 17:19:07 +0200,
Pascal Bourguignon nous disait (told us):
Thomas vO writes:
et bien évidemment, j'ai des dépendances circulaires... est-ce
qu'il existe un moyen d'arrêter ce cercle (vicieux) ?


Si tu veux le faire avec des règles générique, il faudra utiliser des
extensions différentes.

%.eps: %.in.pdf
%.out.pdf: %.eps


merci.
j'ai donc fait ça :

### figures à convertir de l'EPS en PDF
ALL_EPS =
logo.out.pdf

### figures à convertir depuis pdflatex en EPS
ALL_PDF =
logo.out.eps

et ça :

### Conversion des images pour le PS
### un .eps dépend d'un .pdf
%.out.eps: %.in.pdf ${ALL_PDF}
@${PDF2EPS} $< $(patsubst %.in.pdf,%.out.eps,$<)

### Conversion des images pour le PDF
### un .pdf dépend d'un .eps
%.out.pdf: %.in.eps ${ALL_EPS}
@${EPS2PDF} -o=$(patsubst %.in.eps,%.out.pdf,$<) $<

et toujours la même erreur :
[gmake] gmake pdf
gmake: Circular logo.out.pdf <- logo.out.pdf dependency dropped.

qu'est-ce que j'ai raté ??


Il faut distinguer les PDF IN des PDF OUT:

ALL_PDF_IN =
logo.in.pdf
ALL_PDF_OUT =
logo.out.pdf

%.out.eps: %.in.pdf $(ALL_PDF_IN)
@${PDF2EPS} $< $(patsubst %.in.pdf,%.out.eps,$<)

all: $(ALL_PDF_OUT)

--
__Pascal Bourguignon__ http://www.informatimago.com/

CONSUMER NOTICE: Because of the "uncertainty principle," it is
impossible for the consumer to simultaneously know both the precise
location and velocity of this product.