【发布时间】:2020-06-04 08:40:47
【问题描述】:
我有一个如下所示的 Makefile:
.PHONY: aws-deps
requirements.txt: Pipfile Pipfile.lock
pipenv lock -r > $@
aws-deps: requirements.txt
pip3 install --upgrade --target aws_src/ -r $<
如果我多次运行make requirements.txt,它会正确地表示它是最新的。但是,如果我运行make aws-deps,它的行为不会像我期望的.PHONY 目标那样运行,它每次都会运行,无论requirements.txt 是否已更改。比如先删除 requirements.txt:
$ make aws-deps
pipenv lock -r > requirements.txt
pip3 install --upgrade --target aws_src/ -r requirements.txt
<snip>
$ make aws-deps
pip3 install --upgrade --target aws_src/ -r requirements.txt
<snip>
我是否误解了 .PHONY deps 的作用?我希望 aws-deps 仅在其先决条件发生变化时才做某事,即我的 requirements.txt 发生了变化 - 有人知道我在让它工作时缺少什么吗?
谢谢!
【问题讨论】:
标签: makefile dependencies