J'ai un Makefile pour exécuter une suite de tests qui ressemble à peu près à ceci :
%.diff.png: %.test.png
echo '$\*: Comparing with good PNG.'
%.test.png: %.pdf
echo '$\*: Converting PDF to PNG.'
%.pdf: %.tex
echo '$\*: Generating PDF output.'
avec tous les echo
complétées par les tests réels dans le vrai Makefile.
Lorsque j'exécute tous ces tests avec make test
(le test
n'est pas montré ci-dessus), j'obtiens évidemment une sortie linéaire :
...
umtest200b: Generating PDF output.
umtest200b: Converting PDF to PNG.
umtest200b: Comparing with good PNG.
...
Lorsque j'exécute ces tests avec un make multi-job ( make -j2 test
), les tests sont exécutés dans un ordre "filaire" :
...
umtest202a: Generating PDF output.
umtest202b: Generating PDF output.
...
umtest202a: Converting PDF to PNG.
umtest202b: Converting PDF to PNG.
...
umtest202a: Comparing with good PNG.
umtest202b: Comparing with good PNG.
...
Peut-être pouvez-vous voir le problème ; avant de découvrir si le test échoue, il a déjà été exécuté par tous des générations PDF et des conversions PNG pour tous les autres tests.
Existe-t-il un moyen d'organiser les tests de sorte que, même lorsqu'ils sont exécutés avec plusieurs tâches, les tests soient menés à terme avant de passer au test suivant ? Ou est-ce une tâche pour un meilleur make
?