Одной из частых ошибок может быть опечатка в другом имени файла .
Ваш пример довольно прост, но иногда можно смутить
сообщения самого make
. Давайте рассмотрим пример.
Содержимое моей папки:
$ ls -1
another_file
index.md
makefile
В то время как мой makefile
выглядит как
all: index.html
%.html: %.md wrong_path_to_another_file
@echo $@ $<
Хотя у меня есть index.md
там, где он должен быть, и в его названии нет ошибки, сообщение от make
будет
make: *** No rule to make target `index.html', needed by `all'. Stop.
Если честно сообщение совершенно неверно . Давайте немного изменим makefile
, то есть заменим шаблоны на явные правила:
index.html: index.md wrong_path_to_another_file
А теперь мы получим сообщение:
make: *** No rule to make target `wrong_path_to_another_file', needed by `index.html'. Stop.
Чудо! Можно сделать следующие выводы:
Сообщения make
зависят от правил и не всегда указывают на корень проблем
В вашем makefile
могут быть другие проблемы, отличные от указанных в этом сообщении
Теперь у нас есть идея проверять и другие зависимости в правиле :
all: index.html
%.html: %.md another_file
@echo $@ $<
Только это даст нам желаемый результат:
$ make
index.html index.md