Моя цель состоит в том, чтобы иметь универсальный Makefile, который я могу скопировать в каждый каталог, где у меня есть файл RMD, который при вызове make
в этом каталоге будет отображать все цели, определенные во всех файлах .Rmd в этом каталоге.
Приведенный ниже Makefile работает только для рендеринга последнего файла, как и ожидалось. Я уверен, что делаю что-то простое неправильно.
Как мне изменить Makefile, чтобы он делал то, что должен делать?
Также: когда я запускаю make
во второй раз, все файлы генерируются снова, хотя файлы SOURCE не изменились.
У меня есть следующий Makefile:
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)
Спасибо.