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.
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
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.
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
Nebenbei wäre die Frage, ob sich das Makefile auch vereinfachen ließe.
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.
[code]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[/code]
Es exitieren zwei Quelldateien, die ich selbst editiere: [tt]table1.Rnw[/tt] und [tt]table2.Rnw[/tt]. Das sind tex-Dokumente in dennen R-Code eingebettet ist. Diese files werden zuerst durch [tt]Rscript[/tt] geschickt, wo am Ende je eine [tt]tex[/tt]-Datei bei rauskommt. Der eigentliche tex-zu-pdf-Lauf wird von [tt]texout[/tt] erledigt. Ein kleines Script, das ich schon lange verwende, um beim TeX-Lauf erzeugten Nebendateien in ein verstecktes Unterverzeichnis ([tt].out[/tt]) 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.
[code]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[/code]
Nebenbei wäre die Frage, ob sich das Makefile auch vereinfachen ließe.