以下を試すことができます。
秘訣は、入力 (.R ファイル) から出力を推測する必要があることです。
# Makefile
# Beware of indentation when copying use TABS
PLOTDIR = ../figs
RDIR = ../R
# list R files
RFILES = $(wildcard $(RDIR)/*.R)
# compute output file names
PDF_FIGS = $(RFILES:.R=.pdf)
PNG_FIGS = $(RFILES:.R=.png)
# relocate files in output folder
OUT_FILES = $(subst $(RDIR), $(PLOTDIR), $(PDF_FIGS) $(PNG_FIGS))
# first target is the default: simply do 'make'
all: $(OUT_FILES)
clean:
rm $(OUT_FILES)
.PHONY: all clean
# need to split PNG from PDF rules
$(PLOTDIR)/%.png: $(RDIR)/%.R
R --no-save < $<
$(PLOTDIR)/%.pdf $(PLOTDIR)/%.png: $(RDIR)/%.R
R --no-save < $<
私のコメントを反映するように編集: R スクリプトごとに 1 つの依存関係出力ファイルを使用する
PLOTDIR= ../figs
RDIR= ../R
# list R files
RFILES := $(wildcard $(RDIR)/*.R)
# relocate files in output folder
OUT_FILES=$(subst $(RDIR), $(PLOTDIR), $(RFILES:.R=.out))
#$(warning $(OUT_FILES))
# first target is the default: simply do 'make'
all: $(OUT_FILES)
clean:
rm $(OUT_FILES)
.PHONY: all clean
$(PLOTDIR)/%.out: $(RDIR)/%.R
R --no-save < $< && touch $@