具有部分依赖关系的模式规则

时间:2015-06-08 19:47:41

标签: makefile gnu-make

我有一个makefile,其中包含一堆.R个脚本,可以创建.csv个文件作为输出。然后在python模拟中使用这些文件。

all: $(FILES)
  python simulation.py

$(FILES): %.csv: %.R 
  Rscript $<

这很简单。我的皱纹是.R脚本中有一个(且只有一个)有自己的依赖关系,比如说sourcedata。似乎将这种依赖放在模式中会很烦人

all: $(FILES)
  python simulation.py

$(FILES): %.csv: %.R sourcedata
  Rscript $<

sourcedata:
  wget "sourcedata.zip"

但是这样做all: sourcedata $(FILES)并依赖于操作顺序be less effective。我想我也可以给那个R文件自己的虚假规则

problem_script.R: sourcedata
  @echo R script read

但我无法测试是否可行。有没有确定的方法来做到这一点?

1 个答案:

答案 0 :(得分:3)

除非我误解,否则只要 R文件 sourcedata,就需要指定需要重建特定的CSV文件文件更改,对吗?

如果是这样,只需添加:

problem_script.csv: sourcedata

(不需要食谱)。这声明了该特定CSV文件的额外先决条件,因此,只要它与sourcedata相关,就会重建它。