• [^] # Re: Problématique

    Posté par (site web personnel) . En réponse au journal BSD Make Pallàs Scripts 2.0. Évalué à 2.

    Ta solution est beaucoup trop compliquée!

    Pour tirer parti correctement de make tu as besoin de préciser correctement tes dépendances et de tenir compte des timestamps. Comme tu sais programmer des dæmons en Python, je suppose que des programmes plus simples sont également à ta portée.

    Voici ce que je propose:

    Pour commencer, on définit une commande TeX MyFancyGraphic qu'on utilise comme suit:

    \begin{MyFancyGraphic}{filename}
    calcul_vecteurs_mouvements(resize((800, 600), rendu_video_blender(scene.blend, start_frame=0, end_frame=12, resolution=(800, 600), samplesPerPixels=12, materials=('red', 'blue'))))
    \end{MyFancyGraphic}

    Dont l'effet est d'inclure l'image filename et de poubelliser (ignorer) le reste.

    Ensuite on écrit un programme makedepend_blender — en OCaml, mais on s'en cogne ;) — qui prépare les dépendances. Il lit tes fichiers TeX et écrit un fichier .depend_blender contenant des lignes du type

    # DRAFT vaut no quand on prépare la version finale du document et yes
    # autrement.
    DISTCLEANFILES+= filename.in
    REALCLEANFILES+= filename.png
    filename.png: filename.in
     sh ./call_blender.sh -D ${DRAFT} -o filename.png filename.in

    (Si les fichiers image ont d'autres dépendances, il faut trouver une convention pour les ajouter dans MyFancyGraphic et demander à makedepend_blender d'écrire leurs noms à droite de filename.in.)

    De plus makdepend_blender écrit aussi le contenu de l'appel à la commande dans le fichier filename.in — mais ne réécrit pas le fichier si le contenu n'a pas changé, ce qui évite de changer inutilement le timestamp.

    Finalement, côté Makefile cela donne:

    DOC= these
    SRCS= macros.tex
    SRCS+= chaptitre3.tex
    .include "latex.doc.mk"
    .if exists(.depend_blender)
    .include .depend_blender
    .endif
    depend: .depend_blender
    .depend_blender: ${SRCS}
     makedepend_blender ${SRCS} > ${.TARGET}
    REALCLEANFILES+= .depend_blender

    Et voilà. :)