Ваше определение FILES
должно отображать файлы *.gv
в соответствующие файлы *.pdf
;
FILES=$(patsubst %.gv,%.pdf,$(wildcard $(FIGS)/*.gv))
Правило, которое говорит, как генерировать PDF, должно учитывать имя каталога;
%.pdf: %.gv
dot -Tpdf -o $@ $^
Теперь, если make
попытается создать $(FIGS)/ick.pdf
, вход будет $(FIGS)/ick.gv
- шаблон говорит о замене расширения .gv
расширением .pdf
, а остальныеимя файла остается неизменным, так же, как вы хотели бы.Правило типа
%.pdf: $(FIGS)/%.gv # error, don't use
гласит, что вам нужно найти исходный файл в подкаталоге $(FIGS)
;так что если вы попытались сделать $(FIGS)/ick.pdf
, это значит, что make
потребуется найти или сгенерировать $(FIGS)/$(FIGS)/ick.gv
в качестве ввода в соответствии с этим правилом.