如何在前提条件发生变化时使GNU make重建虚假目标?

时间:2015-11-08 17:55:50

标签: makefile gnu-make

在我的情况下,我有requirements目标,它安装所需的Python软件包和test,它运行测试并依赖于之前的软件包。

安装依赖项是一项很长的操作,我希望它只在requirements.txt更改时执行。我怎样才能做到这一点?

这是Makefile的简化示例,我现在有:

.PHONY: test requirements

requirements: requirements.txt
    pip install -r $<

test: tests/ | requirements
    py.test $^

1 个答案:

答案 0 :(得分:3)

正如@ user1034749指出的那样,Make会比较文件的修改时间。如果您希望它知道自上次安装以来requirements.txt何时被修改,您必须为其提供一个文件,其修改时间与上次安装的时间相同,以便它可以比较两者。换句话说,您必须具有虚拟文件并在执行安装时对其进行修改。你可以把它叫做任何你喜欢的东西,但我会称之为&#34;安装&#34;:

.PHONY: test

installation: requirements.txt
    pip install -r $<
    touch $@

test: tests/ | installation
    py.test $^