Makefile basics, multiple PDFs und Knitr/R
Verfasst: Mo 12. Dez 2016, 10:38
Meine aktuelle Projektstruktur ist zugegeben etwas komplex für den Makefile-Einstieg. Aber vorher (bei den simpleren Projekten) gab es eben die Notwendigkeit nicht. Und da steh ich nun.
Erstmal zur vollständigen Verwirrung das Makefile.
Es exitieren zwei Quelldateien, die ich selbst editiere: table1.Rnw und table2.Rnw. Das sind tex-Dokumente in dennen R-Code eingebettet ist. Diese files werden zuerst durch Rscript geschickt, wo am Ende je eine tex-Datei bei rauskommt. Der eigentliche tex-zu-pdf-Lauf wird von texout erledigt. Ein kleines Script, das ich schon lange verwende, um beim TeX-Lauf erzeugten Nebendateien in ein verstecktes Unterverzeichnis (.out) zu schieben und bei Bedarf wieder rauszuholen.
Kernproblem hier ist, dass ich jetzt zwei PDF-Dateien am Ende haben will. Das läuft irgendwie nicht.
Make behauptet die PDF-Regel wäre gescheitert, obwohl das PDF erzeugt wurde.
Nebenbei wäre die Frage, ob sich das Makefile auch vereinfachen ließe.
Erstmal zur vollständigen Verwirrung das Makefile.
BASENAME=table
all: $(BASENAME)1.pdf $(BASENAME)2.pdf
$(BASENAME)1.pdf: $(BASENAME)1.tex
texout '$(BASENAME)1.tex' & sleep 1s && xelatex -shell-escape -interaction=nonstopmode '$(BASENAME)1.tex'
$(BASENAME)2.pdf: $(BASENAME)2.tex
texout '$(BASENAME)2.tex' & sleep 1s && xelatex -shell-escape -interaction=nonstopmode '$(BASENAME)2.tex'
$(BASENAME)1.tex: $(BASENAME)1.Rnw
Rscript -e "library(knitr);knit('$(BASENAME)1.Rnw')"
$(BASENAME)2.tex: $(BASENAME)2.Rnw
Rscript -e "library(knitr);knit('$(BASENAME)2.Rnw')"
clean:
rm -frv .out
rm -fv $(BASENAME)1.tex
rm -fv $(BASENAME)1.pdf
rm -fv $(BASENAME)1.aux
rm -fv $(BASENAME)1.log
rm -fv $(BASENAME)2.tex
rm -fv $(BASENAME)2.pdf
rm -fv $(BASENAME)2.aux
rm -fv $(BASENAME)2.log
# this targets are not files
.PHONY: clean all pdfKernproblem hier ist, dass ich jetzt zwei PDF-Dateien am Ende haben will. Das läuft irgendwie nicht.
Make behauptet die PDF-Regel wäre gescheitert, obwohl das PDF erzeugt wurde.
Output written on table1.pdf (2 pages). Transcript written on table1.log. Makefile:7: die Regel für Ziel „table1.pdf“ scheiterte make: *** [table1.pdf] Fehler 1