Рассмотрим цель output/index.html
.Зависимость ...
%.html: %.md
будет эффективно расширена до ...
output/index.html: output/index.md
с $*
, равным output/index
.Так что make
ищет output/index.md
, но не может его найти - отсюда и сообщение об ошибке.
Чтобы получить правильный стебель образца ($*
== index
), вам нужно добавить базукаталоги к правилу шаблона ...
output/%.html: src/pages/%.md
@echo $< to $@
РЕДАКТИРОВАТЬ 1:
Если вас беспокоит повторяющиеся жестко закодированные строки, такие как output
и src/pages
тогда вы всегда можете назначить их параметрам ...
OUTPUT_DIR := output
SOURCE_DIR := src/pages
build: $(patsubst $(SOURCE_DIR)/%.md, $(OUTPUT_DIR)/%.html, $(wildcard $(SOURCE_DIR)/*.md))
$(OUTPUT_DIR)/%.html: $(SOURCE_DIR)/%.md
@echo $< to $@
(Предполагая, что вы имели в виду "оптимизация" в вашем комментарии.)