Makefile以呈现目录中所有.Rmd文件的所有目标
我的目标是拥有一个通用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
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('$