Makefile始终运行目标

时间:2011-11-27 21:04:41

标签: makefile

我可能会错过这个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 个答案:

答案 0 :(得分:6)

您没有创建名为init的文件,因此init始终是过时的。因此,依赖它的一切都是过时的。

答案 1 :(得分:2)

可能没有名为init的文件?因此它会尝试更新devel/bar(因为它取决于init)。

考虑使用.PHONY