makefile 目标比先决条件更新,但会重新完成

奥伦·伊什沙洛姆

连续两次运行我的目标,它会被执行两次这是错误的,因为配置文件新的。

$ cat makefile
.ONESHELL:
configure: configure.www
    @REMOTE_FILE=$$(cat $<)
    @wget $${REMOTE_FILE}
    @tar -xf $$(basename $${REMOTE_FILE})
    @mv pspp-1.4.1/configure .
$ cat configure.www
https://ftp.gnu.org/gnu/pspp/pspp-1.4.1.tar.gz

$$(cat <$)发生之前cp创建的配置文件。

奥伦·伊什沙洛姆

从未来用户的评论中发布@Renaud Pacalet 回答:

确实,mv指令并没有改变修改日期,所以makefile确实比较了PSPP的最后修改日期configure和我自己的configure.www修改日期。由于后者较新(并将保持较新),因此目标将继续执行。

$ stat configure | grep "Modify"
Modify: 2020-09-06 01:20:01.000000000 +0300
$ stat configure.www | grep "Modify"
Modify: 2021-05-05 10:11:43.891400412 +0300    // Newer !

我通过添加一个final来解决它touch(没有双关语:))

.ONESHELL:
configure: configure.www
    @REMOTE_FILE=$$(cat $<)
    @wget $${REMOTE_FILE}
    @tar -xf $$(basename $${REMOTE_FILE})
    @mv pspp-1.4.1/configure .
    @touch $@    <----------------------

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何设置Makefile目标取决于模式先决条件?

Makefile:将PHONY目标声明为配方先决条件

具有非语音先决条件的Makefile .PHONY目标

具有动态先决条件的动态 Makefile 目标

如何在 Makefile 目标中重复相同的先决条件?

在此makefile中,为什么总是要重新构建目标“ bunzip2 / data2.tar”的先决条件?

关于自动生成Makefile先决条件

makefile 不扩展动态先决条件

规则之前的Makefile先决条件

makefile:先决条件$(变量)中的%模式

Makefile 先决条件中的变量分配

指定输入源(而不是中间体)作为 Makefile 中目标的先决条件

Makefile的同一目标中是否可能有多个先决条件模式?

Makefile 仅识别更改的先决条件,而不识别新的先决条件

makefile:: *** 先决条件不能在配方中定义。停止

Makefile先决条件列表中的分号是什么?

Makefile,先决条件自动变量中的替代路径

Makefile:如果不存在则忽略先决条件

为什么先决条件的顺序在 makefile 中很重要?

如何编写具有多个目标/先决条件才能执行同一配方的GNU Makefile?

Makefile:如果 $^ 获得所有先决条件,可以使用什么来获得所有目标

1:1配方的Makefile模式,其先决条件在目录和文件扩展名上均不同于目标

Makefile:如何为两个文件列表设置先决条件

makefile 通配符先决条件多次获取同一个文件

从URL列表下载文件列表作为makefile中的先决条件

Makefile 找不到最后一个先决条件对象

重新制作模式规则的目标,即使它比先决条件更新

Makefile目标引用Makefile

CMake中是否提供了GNU Makefile中仅订购的先决条件,如果没有,替代选项是什么?