Make:从远程服务器复制文件而不是重新制作

Make: copy file from remote server rather than remake

我想从远程服务器复制一个文件,而不是在使用 gnu make 时尽可能重新计算它。为此,我一直保留一个本地 "dummy" 文件,该文件记录(通过时间戳)上次创建文件并将其复制 远程服务器的时间。我想做的事情的要点如下。 computed.file 是文件本身,computed.file.remote 是虚拟文件。

computed.file: computed.file.remote
    <copy computed.file from remote server>

computed.file.remote:
    <command to create computed.file>
    <copy computed.file to remote server>
    touch computed.file.remote

然而,这将强制将文件复制到远程服务器,如果这两个规则都被调用,即使它在第二条规则中创建文件时存在。

还有其他方法吗?

嗯,你可以这样做:

computed.file: computed.file.remote
        if [ $< -nt $@ ]; then <copy computed.file from remote server>; fi

computed.file.remote:
        <command to create computed.file>
        <copy computed.file to remote server>
        touch -r computed.file $@