У меня есть этот Makefile:Может ли предварительное правило шаблона шаблона makefile быть правилом шаблона?
.PHONY: all
all: foo.o
makefile: ;
%.inc:
echo INC
touch [email protected]
%.o: bar.inc
echo O
touch [email protected]
%.o:
FAIL
я ожидаю, что использовать первый %.o
правило, создают bar.inc как необходимое условие, а затем создать foo.o. Вместо этого он использует последнее правило и я получаю это:
FAIL
make: FAIL: Command not found
make: *** [foo.o] Error 127
Он отлично работает, если я либо изменить %.inc
к bar.inc
или изменить %.o
к foo.o
. говорит
для того, чтобы шаблонное правило применять его целевой шаблон должен совпадать с именем файла, рассматриваемыми и все его предпосылок (после подстановки шаблона) должен назвать файлы, которые существуют или может быть сделаны ,
Правило ли шаблона %.inc
не учитывается как «может быть сделано»? Я использую GNU Make 3.81.
Спасибо! Я могу удалить последнее правило '% .o', но make будет выбирать встроенное правило' $ (AS) $ (ASFLAGS) ', потому что foo.s существует по другим причинам. Если я отменил это, он должен выбрать правильное правило. –
Для справки, вот как отменить встроенное правило: https://www.gnu.org/software/make/manual/html_node/Canceling-Rules.html#Canceling-Rules –