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

上一篇: Makefile dependencies with Sweave

下一篇: What exactly does R CMD Sweave