具有部分依赖性的模式规则
Pattern rule with partial dependency
我有一个 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
但我无法测试这是否有效。是否有既定的方法来做到这一点?
除非我误解了,否则您需要指定每当 R 文件 或 时需要重建特定的 CSV 文件sourcedata
文件更改,对吗?
如果是这样,只需添加:
problem_script.csv: sourcedata
(不需要食谱)。这声明了该特定 CSV 文件的额外先决条件,因此只要它相对于 sourcedata
过时,它将被重建。
我有一个 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
但我无法测试这是否有效。是否有既定的方法来做到这一点?
除非我误解了,否则您需要指定每当 R 文件 或 时需要重建特定的 CSV 文件sourcedata
文件更改,对吗?
如果是这样,只需添加:
problem_script.csv: sourcedata
(不需要食谱)。这声明了该特定 CSV 文件的额外先决条件,因此只要它相对于 sourcedata
过时,它将被重建。