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

Makefile:假设文件是特定目标的最新文件?,makefile,gnu-make,Makefile,Gnu Make,我正在使用GNU Make为一篇论文构建图表。我有两个目标: 数据重建数据/*.csv文件夹。这在计算上非常昂贵。(同样是在金钱方面。) plot从数据/文件夹重建绘图 现在,由于计算数据有多么昂贵,我将结果文件提交到git中。我希望尽可能避免改变它们。但是当有人克隆git存储库时,它会弄乱文件的mtime,因此makeplot希望重建数据,即使它们已经存在 也就是说,我不想删除目标依赖项!如果出于某种原因,我重新计算了数据中的某些内容,我希望绘图能够看到这一点,并能够重建它们自己。另外,如

我正在使用GNU Make为一篇论文构建图表。我有两个目标:

  • 数据
    重建数据/*.csv文件夹。这在计算上非常昂贵。(同样是在金钱方面。)
  • plot
    从数据/文件夹重建绘图
现在,由于计算
数据
有多么昂贵,我将结果文件提交到git中。我希望尽可能避免改变它们。但是当有人克隆git存储库时,它会弄乱文件的mtime,因此
makeplot
希望重建
数据,即使它们已经存在

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


我认为理想情况下,我想要的是有一种方式说“如果这些文件存在,假设它们是最新的”。在GNU Make中有这样做的方法吗?

多亏了Renaud Pacalet的评论,我曾经这样重写我的规则:

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

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

您正在寻找的可能是。啊,太好了!你应该把它贴出来作为答案,因为它肯定是解决方案。我没有把它贴出来作为答案,因为我几乎可以肯定这个问题以前已经被回答过了(但我没有花时间找到它)。