Asumir doc.pdf
es el objetivo.
La siguiente regla desencadena una regeneración de doc.pdf
siempre que doc.refer
se actualiza, pero también se alegra cuando doc.refer
no existe en absoluto:
doc.pdf: doc.mom $(wildcard doc.refer)
pdfmom -e -k < $< > [email protected]
Sin embargo, la siguiente regla de patrón no logra lo mismo (el PDF se genera correctamente, pero no se activa una reconstrucción al cambiar doc.refer
):
%.pdf: %.mom Makefile $(wildcard %.refer)
pdfmom -e -k < $< > [email protected]
Sospecho que el wildcard
el comando se ejecuta antes del %
el personaje se expande. ¿Cómo puedo solucionar esto?
Respuesta aceptada:
La función GNU Make wildcard
toma un patrón global de shell y lo expande a los archivos que coinciden con ese patrón. El patrón %.refer
no contiene patrones de englobamiento de conchas.
Probablemente quieras algo como
%.pdf: %.mom %.refer
pdfmom -e -k < $< > [email protected]
%.pdf: %.mom
pdfmom -e -k < $< > [email protected]
El primer objetivo se invocará para crear archivos PDF cuando haya un .mom
y un .refer
archivo disponible para el nombre base del documento. El segundo objetivo se invocará cuando no haya un .refer
archivo disponible.
El orden de estos objetivos es importante.