在我的例子中,我有requirements
目标,它安装所需的Python包,还有test
,它运行测试并依赖于前一个。
安装依赖项是一项漫长的操作,我希望它只在requirements.txt
更改时执行。我怎样才能做到这一点?
下面是Makefile的一个简化示例,我现在有了:
.PHONY: test requirements
requirements: requirements.txt
pip install -r $<
test: tests/ | requirements
py.test $^
正如@user1034749所指出的,Make比较了文件的修改次数。如果你想让它知道requirements.txt
自上次安装以来的修改时间,你必须给它一个修改时间与上次安装时间相同的文件,这样它才能比较两者。换句话说,您必须有一个伪文件,并在执行安装时对其进行修改。你可以称之为任何你喜欢的东西,但我会称之为"安装":
.PHONY: test
installation: requirements.txt
pip install -r $<
touch $@
test: tests/ | installation
py.test $^