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é.