Předpokládejme doc.pdf
je cíl.
Následující pravidlo spouští regeneraci doc.pdf
kdykoli doc.refer
je aktualizován, ale je také rád, když doc.refer
vůbec neexistuje:
doc.pdf: doc.mom $(wildcard doc.refer)
pdfmom -e -k < $< > [email protected]
Následující pravidlo vzoru však nedosahuje toho samého (PDF se vygeneruje správně, ale při změně doc.refer
se nespustí opětovné sestavení ):
%.pdf: %.mom Makefile $(wildcard %.refer)
pdfmom -e -k < $< > [email protected]
Mám podezření, že wildcard
příkaz se provede před %
postava je rozšířena. Jak to mohu obejít?
Přijatá odpověď:
Funkce GNU Make wildcard
vezme vzor kulovitých útvarů a rozšíří jej na soubory odpovídající tomuto vzoru. Vzor %.refer
neobsahuje žádné kulovité vzory.
Pravděpodobně chcete něco jako
%.pdf: %.mom %.refer
pdfmom -e -k < $< > [email protected]
%.pdf: %.mom
pdfmom -e -k < $< > [email protected]
První cíl bude vyvolán pro vytváření souborů PDF, pokud existuje .mom
a .refer
soubor dostupný pro základní název dokumentu. Druhý cíl bude vyvolán, pokud neexistuje .refer
soubor k dispozici.
Pořadí těchto cílů je důležité.