Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile以呈现目录中所有.Rmd文件的所有目标_R_Macos_Makefile_Knitr_R Markdown - Fatal编程技术网

Makefile以呈现目录中所有.Rmd文件的所有目标

Makefile以呈现目录中所有.Rmd文件的所有目标,r,macos,makefile,knitr,r-markdown,R,Macos,Makefile,Knitr,R Markdown,我的目标是拥有一个通用Makefile,我可以将它复制到我拥有RMD文件的每个目录中,在调用此目录中的make时,它将呈现此目录中所有.RMD文件中定义的所有目标 下面的Makefile仅适用于按预期渲染最后一个文件。我肯定我做错了什么 我必须如何修改Makefile,使其执行它应该执行的操作 另外:当我第二次运行make时,所有文件都会再次生成,尽管没有更改任何源文件 我有以下生成文件: SOURCES=$(shell find . -name "*.Rmd") TARGETS_pdf=$(S

我的目标是拥有一个通用Makefile,我可以将它复制到我拥有RMD文件的每个目录中,在调用此目录中的
make
时,它将呈现此目录中所有.RMD文件中定义的所有目标

下面的Makefile仅适用于按预期渲染最后一个文件。我肯定我做错了什么

我必须如何修改Makefile,使其执行它应该执行的操作

另外:当我第二次运行
make
时,所有文件都会再次生成,尽管没有更改任何源文件

我有以下生成文件:

SOURCES=$(shell find . -name "*.Rmd")
TARGETS_pdf=$(SOURCES:%.Rmd=%.pdf)
TARGETS_html=$(SOURCES:%.Rmd=%.html)
TARGETS_nb_html=$(SOURCES:%.Rmd=%.nb.html)
TARGETS_docx=$(SOURCES:%.Rmd=%.docx)

default: $(SOURCES)
    $(info Generating defined targets from $(SOURCES))
    @echo "$< -> $@"
    @Rscript -e "rmarkdown::render('$<', output_format = 'all')"

clean:
    rm -rf $(TARGETS_pdf)
    rm -rf $(TARGETS_html)
    rm -rf $(TARGETS_nb_html)
    rm -rf $(TARGETS_docx)
SOURCES=$(shell find.-name“*.Rmd”)
TARGETS_pdf=$(来源:%.Rmd=%.pdf)
TARGETS_html=$(源:%.Rmd=%.html)
TARGETS_nb_html=$(来源:%.Rmd=%.nb.html)
目标_docx=$(来源:%.Rmd=%.docx)
默认值:$(源)
$(从$(源)生成定义目标的信息)
@回显“$<->$@”

@Rscript-e“rmarkdown::render('$当您运行
make
时,它会执行它找到的第一条规则。在您的情况下,它是
default
。它会检查此文件是否存在。如果不存在,则会运行脚本,该脚本将生成目标文件(
default
)。您的脚本不会这样做。这就是为什么下次运行时,它会重新启动。如果文件存在,则不需要运行脚本

你能做的是:

SOURCES=$(shell find . -name "*.Rmd")
TARGET = $(SOURCES:%.Rmd=%.pdf) $(SOURCES:%.Rmd=%.html) $(SOURCES:%.Rmd=%.nb.html) $(SOURCES:%.Rmd=%.docx)

%.docx %.nb.html %.html %.pdf: %.Rmd
    Rscript -e "rmarkdown::render('$<', output_format = 'all')"

default: $(TARGET)

clean:
    rm -rf $(TARGET)
SOURCES=$(shell find.-name“*.Rmd”)
TARGET=$(源代码:%.Rmd=%.pdf)$(源代码:%.Rmd=%.html)$(源代码:%.Rmd=%.nb.html)$(源代码:%.Rmd=%.docx)
%.docx%.nb.html%.html%.pdf:%.Rmd
Rscript-e“rmarkdown::render('$