Makeave与Sweave的依赖关系
我正在尝试使用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'早。 我确信我错过了一些相当明显的事情,但我现在已经把我的头发拉出了几个小时。
Make试图使用data
规则来构建data
,这是foo.rnw
的先决条件,但data
规则并不实际构建data
,它会构建其他目录otherdirectory/data
。 所以Make每次都运行它,因为data
永远不会存在。
尝试这个:
...
otherdirectory/data: datamaker.R
R CMD BATCH 'datamaker.R'
foo.rnw: otherdirectory/data
...
链接地址: http://www.djcxy.com/p/26911.html