Voici un Makefile squelette juste pour le rendre plus facile à décrire le problème:Une cible Makefile peut-elle invoquer des commandes même en cas d'échec d'une condition préalable?
all_tests : unit_tests other_tests_1 other_tests_2 ... other_tests_N
unit_tests : set1_summary.txt set2_summary.txt ... setN_summary.txt
%_summary.txt : %_details.txt
perl createSummary.pl --in $^ -out [email protected]
%_details.txt : test_harness
./test_harness --test-set $*
J'ai donc un coureur de test qui produit un fichier avec des résultats détaillés, puis un mécanisme de filtrage pour créer un fichier de synthèse. Maintenant, l'application du programme d'exécution de test renvoie un code d'erreur si l'un des éléments de l'ensemble de tests échoue, ce qui annulera correctement la cible "all_tests" et n'invoquera jamais les cibles other_test. Cependant, je voudrais exécuter les détails -> transformation inconditionnelle inconditionnellement, puisque cela est pertinent même pour un essai échoué. J'ai essayé différentes variantes, mais la seule méthode que j'ai pu utiliser était de placer toute la chaîne de commande dans un script Perl, en stockant le résultat de la première commande et en l'utilisant comme valeur de retour pour l'ensemble du script. Mais cela ne semble pas être une très bonne solution, d'autant plus que le jeu de commandes "réel" est un peu plus complexe que ce que montre ce squelette. Connaissez-vous une méthode basée purement GNU Make pour accomplir cela?
Je pense 'make all_tests; STATUS = $ ?; faire un résumé; exit $ STATUS' pourrait faire ce que vous voulez. –