Estoy observando un comportamiento interesante de make y me pregunto si hay una explicación razonable además de un error en gmake.reglas del patrón makefile sin recetas
Digamos que tenemos lo siguiente en el archivo MAKE:
%-animal:
echo "$* is an animal"
%-fox: %-fox-animal
%-wolf: %-wolf-animal
La diferencia entre los dos últimos objetivos es que "% -wolf" no tiene ninguna receta, y "% -Fox" tiene una receta vacía (es decir, solo una línea con una pestaña al principio).
Cuando tratamos de ejecutar las reglas, esto es lo que sucede:
[[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
regla de patrón i.e.the que tiene una receta (aunque una vacía) trabaja, el que no lo hace no lo hace. ¿Me estoy perdiendo algo de la forma en que debería funcionar?
Lo que usted llama 'receta', hacer llamadas 'regla para hacer'. De modo que su mensaje concuerda con lo que crees que debería hacer: hay una regla para freddy-wolf, pero no hay una regla '* para hacer * freddy-wolf. – reinierpost
@reinierpost: La versión GNU Make 3.82 incluye una búsqueda/reemplazo de documentación épica creando el término 'receta' para el conjunto de comandos utilizados para actualizar el objetivo de una regla. Entonces (1) no es solo el término de m1tk4 y (2) esto también fue una sorpresa para mí. Ver r1.51 de http://cvs.savannah.gnu.org/viewvc/make/doc/make.texi?root=make&view=log –
@John Marshall: hmmm ... es bueno saberlo, gracias. (Estoy en 3.81 hasta que Cygwin lo actualice). – reinierpost