Пожалуйста, убедитесь, что приведенные вами примеры действительно показывают проблему. В вашей реальной ситуации должно быть что-то иное, чем то, что вы показываете здесь, потому что файл makefile, который вы показываете здесь, будет работать так, как вы ожидаете. У меня не установлено pandoc
, поэтому я заменил touch
, и он отлично работает:
SRC = $(wildcard *.md)
TMP := $(patsubst %.md,%.tmp,$(SRC))
.INTERMEDIATE: $(TMP)
out.docx: $(TMP)
touch $@
%.tmp: %.md
touch $@
Сейчас:
$ touch foo.md bar.md biz.md
$ make
touch bar.tmp
touch biz.tmp
touch foo.tmp
touch out.docx
rm foo.tmp bar.tmp biz.tmp
$ make
make: 'out.docx' is up to date.
$ touch biz.md
$ make
touch bar.tmp
touch biz.tmp
touch foo.tmp
touch out.docx
rm foo.tmp bar.tmp biz.tmp
Вы можете запустить make -d
(перенаправить вывод для дальнейшего изучения), чтобы понять, почему make считает, что out.docx
устарел.