Рассмотрим следующее makefile
(и любое hi.c
):
.PHONY: analyze-%
hi: hi.c
gcc -o $@ $<
%.json: %
touch $@ # actually created by analysis-tool
analyze-%: %.json # why does this not work?
Как указывает мой комментарий в makefile
, неявное правило не работает:
$ make analyze-hi
make: *** No rule to make target 'analyze-hi'. Stop.
Это работает только после преобразования его в шаблонное правило c:
...
analyze-hi: analyze-%: %.json
Почему это так? Разве make
не сможет понять это самостоятельно, без необходимости явного написания полного имени цели? В этом нет никакой двусмысленности или чего-либо еще (насколько я знаю).