Makefile всегда работает цель - PullRequest
4 голосов
/ 28 ноября 2011

Я могу пропустить что-то очень очевидное с этим Makefile:

convert: devel/bar
  touch convert

init: devel/foo
  echo 'init'

devel/foo:
  mkdir -p devel
  touch devel/foo

devel/bar: init
  touch devel/bar

Когда я запускаю его, всегда вызывается цель devel/bar.Я ожидал, что он вызовет convert, проверит файл devel/bar и вызовет эту цель, только если этот файл не найден.Если я уберу его зависимость от init, все будет работать так, как я ожидал.Что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 28 ноября 2011

Вы не создаете файл с именем init, поэтому init всегда устарел.Поэтому все, что от нее зависит, всегда устарело.

2 голосов
/ 28 ноября 2011

Там, вероятно, нет файла с именем init?Поэтому он пытается обновить devel/bar (поскольку это зависит от init).

Рассмотрите возможность использования .PHONY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...