我可能会错过这个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
的依赖,一切都按照我的预期运行。我做错了什么?
答案 0 :(得分:6)
您没有创建名为init
的文件,因此init
始终是过时的。因此,依赖它的一切都是过时的。
答案 1 :(得分:2)
可能没有名为init
的文件?因此它会尝试更新devel/bar
(因为它取决于init
)。
考虑使用.PHONY