J'observe un comportement intéressant de make et je me demande s'il y a une explication raisonnable à cela en plus d'un bug dans gmake.makefile pattern rules without recipes
Disons que nous avons les éléments suivants dans makefile:
%-animal:
echo "$* is an animal"
%-fox: %-fox-animal
%-wolf: %-wolf-animal
La différence entre les deux dernières cibles est que « % -Wolf » n'a pas de recette, et « % -fox » a une recette vide (c'est-à-dire juste une ligne avec un onglet au début).
Lorsque nous essayons d'exécuter les règles, voici ce qui se passe:
[[email protected] tmp]# make freddy-animal
echo "freddy is an animal"
freddy is an animal
[[email protected] tmp]# make freddy-wolf
make: *** No rule to make target `freddy-wolf'. Stop.
[[email protected] tmp]# make freddy-fox
echo "freddy-fox is an animal"
freddy-fox is an animal
règle de schéma i.e.the qui a une recette (bien un vide) fonctionne, celui qui ne fait pas non. Ai-je manqué quelque chose dans la façon dont il est censé fonctionner?
Donc, son message est d'accord avec ce que vous pensez qu'il devrait faire: il y a une règle pour le loup-garou, mais pas de règle pour faire freddy-loup. – reinierpost
@reinierpost: La version GNU Make 3.82 incluait une recherche/remplacement de documentation épique créant le terme «recette» pour l'ensemble des commandes utilisées pour mettre à jour la cible d'une règle. Donc (1) ce n'est pas seulement le terme de m1tk4 et (2) ce fut une surprise pour moi aussi. Voir r1.51 de http://cvs.savannah.gnu.org/viewvc/make/doc/make.texi?root=make&view=log –
@John Marshall: hmmm ... bon à savoir, merci. (Je suis sur 3.81 jusqu'à ce que Cygwin le mettra à jour.) – reinierpost