我正在尝试使用makefile编译Sweave文档,使用存储在另一个目录中的数据,由当前目录中的脚本汇编。工作流程如下:
datamaker.R> / otherdirectory / data> .rnw> .tex> .PDF
我目前有一个类似于下面创建的makefile:
MASTER = foo.pdf
VPATH = /otherdirectory
all: $(MASTER)
open $<
data: datamaker.R
R CMD BATCH 'datamaker.R'
foo.rnw: data
foo.tex: foo.rnw
R CMD SWEAVE 'foo.rnw'
foo.pdf: foo.tex
pdflatex foo.tex
问题是R CMD BATCH命令每次都会运行,即使'datamaker'比'data'旧。我确信我错过了一些相当明显的东西,但我现在已经把头发拉了几个小时了。
答案 0 :(得分:0)
Make正在尝试使用data
规则构建data
,这是foo.rnw
的先决条件,但data
规则实际上并未构建data
它构建otherdirectory/data
。所以Make每次都会运行它,因为data
永远不存在。
试试这个:
...
otherdirectory/data: datamaker.R
R CMD BATCH 'datamaker.R'
foo.rnw: otherdirectory/data
...