Makefile:假设文件针对特定目标是最新的?

时间:2019-03-15 09:34:23

标签: makefile gnu-make

我正在使用GNU Make构建论文的图形。我有两个目标:

  • data会重建data / *。csv文件夹。这在计算上非常昂贵。 (也就金钱而言。)
  • plot从数据/文件夹重建图

现在,由于计算data的成本,我将生成的文件提交到git中。我想避免尽可能地更改它们。但是,当有人克隆git存储库时,它会使文件的mtime混乱,因此make plot希望重建data,即使它们已经存在。

也就是说,我不想删除目标依赖项!如果由于某种原因我重新计算了data中的某些内容,我希望这些图能够看到并能够重建它们自己。另外,如果缺少一个csv,我希望对其进行计算。

我认为,理想情况是,我想说一种“如果这些文件存在,则假定它们是最新的”。在GNU Make中有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

感谢Renaud Pacalet的评论,我使用order-only dependencies来重写我的规则,如下所示:

data/%.csv: | source/%.py
    ...

使用此|可使make永远不会重建已经存在的CSV文件。