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.