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 pdf
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.
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