Посмотрите на эти два правила:
nopage: textfile
%.nopage: %.textfile
@cat $< | sed 's/Page [0-9]*//g' > $@
Да, это два правила. Первый тот, кого вы называете; его цель - nopagee
, она имеет обязательное условие textfile
и не имеет команд. Поэтому после того, как make выполнит правило textfile
, is is not more. Правило шаблона (%.nopage: ...
) никогда не выполняется вообще.
Вот хороший способ сделать это:
NOPAGES := $(patsubst %.pdf, %.nopage, $(SRC))
# or you could use NOPAGES := $(SRC:.pdf=.nopage)
.PHONY: nopages
nopages: $(NOPAGES)
%.nopage: %.textfile
@sed 's/Page [0-9]*//g' $< > $@
И обязательно измените правило архива:
archive.tgz: $(NOPAGES)
tar -c --gzip $@ $^
Обратите внимание на использование $^
вместо $<
в этой последней команде. Также обратите внимание, что я скопировал синтаксис tar
из вашего make-файла; моя версия tar не примет эту команду, она требует "-f" перед "$ @".