Skip to content

Instantly share code, notes, and snippets.

@halpo
Created November 16, 2011 21:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save halpo/1371533 to your computer and use it in GitHub Desktop.
Save halpo/1371533 to your computer and use it in GitHub Desktop.
Makefile for Sweave with pgfSweave/cacheSweave
################################################################################
all:pdf # default rule DO NOT EDIT
################################################################################
MAINFILE := main
RNWFILES :=
RFILES :=
TEXFILES :=
CACHEDIR := cache
FIGUREDIR := figures
DRIVER := pgfSweave
LATEXMK_FLAGS :=
SWEAVE_OPTS := "pdf=T, eps=T, tikz=F, cache=F"
SWEAVE_CALL_OPTS := # prefix with comma `,`
##### Explicit Dependencies #####
$(RFILES):
################################################################################
RNWTEX = $(RNWFILES:.Rnw=.tex)
ROUTFILES = $(RFILES:.R=.Rout)
MAINRNW = $(MAINFILE:=.Rnw)
MAINTEX = $(MAINFILE:=.tex)
MAINPDF = $(MAINFILE:=.pdf)
ALLTEX = $(MAINTEX) $(RNWTEX) $(TEXFILES)
SWEAVE_OPTS += , prefix.string=$(FIGUREDIR)/fig
# Dependencies
$(MAINTEX): $(RNWTEX) $(TEXFILES) $(MAINRNW)
$(MAINPDF): $(MAINTEX) $(ALLTEX)
.PHONY:pdf tex clean clearcache cleanall cleanoutputs
pdf: $(MAINPDF)
tex: $(ALLTEX)
$(CACHEDIR):
mkdir $(CACHEDIR)
$(FIGUREDIR):
mkdir $(FIGUREDIR)
%.tex:%.Rnw $(CACHEDIR) $(FIGUREDIR)
Rscript -e "if('$(DRIVER)'!='Sweave'){require($(DRIVER));setCacheDir('$(CACHEDIR)')};Sweave('$<', \
driver = $(DRIVER)Driver() $(SWEAVE_CALL_OPTS))"
%.R:%.Rnw
Rscript -e "Sweave('$^', driver=Rtangle())"
%.Rout:%.R
R CMD BATCH "$^" "$@"
%.pdf:%.tex
latexmk -pdf $<
clean:
-latexmk -c -quiet $(MAINFILE).tex
-rm -f Rplots.pdf $(MAINTEX) $(RNWTEX)
-rm -rf $(FIGUREDIR)
-rm -f estimating-discrete.R
clearcache:
-rm -rf cache *.map
cleansim:
-rm -rf *.Rdata
cleanoutputs:
-latexmk -C -quiet $(MAINFILE).tex
cleanall: cleanoutputs clean clearcache
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment