Ich habe bereits gesehen How to manually call another target from a make target?, aber meine Frage ist ein bisschen anders; betrachten Sie dieses Beispiel (beachten Sie, stackoverflow.com ändert die Tabs zu Leerzeichen in der Anzeige, aber Registerkarten Quelle erhalten sind, wenn Sie zu bearbeiten versuchen):Eine make-Variable ändern und eine andere Regel aus einem Rezept im selben Makefile aufrufen?
TEXENGINE=pdflatex
pdflatex:
echo the engine is $(TEXENGINE)
lualatex:
TEXENGINE=lualatex
echo Here I want to call the pdflatex rule, to check $(TEXENGINE) there!
Hier wird, wenn ich die Standard-Ziel ausgeführt (pdflatex
), ich erhalte die erwartete Ausgabe:
$ make pdflatex
echo the engine is pdflatex
the engine is pdflatex
Aber mit dem Ziel lualatex
, ich will:
- Änderung der
make
VariableTEXENGINE
zulualatex
und dann - rufen Sie den gleichen Code wie in
pdflatex
(die es verwendet).
Wie könnte ich das tun?
ist klar, die ich in meinem lualatex
Regel nicht gelingt, auch die TEXENGINE
Variablen zu ändern, weil ich das, wenn ich versuche, es:
$ make lualatex
TEXENGINE=lualatex
echo Here I want to call the pdflatex rule, to check pdflatex there!
Here I want to call the pdflatex rule, to check pdflatex there!
... so würde ich wirklich gerne wissen, ob etwas So ist das in Makefiles möglich.
Für einen Start, ich würde dieses Ziel 'pdflatex' nicht nennen, wenn Sie es verwenden willkürliche Sachen zu überprüfen. Ich würde etwas wie "checkEngine" vorschlagen und es zu ".PHONY" machen. –
Danke, @OliverCharlesworth - Ich denke, das ist in Ordnung, aber, weil 'pdflatex' in diesem Anwendungsfall der Standard ist, und so bekomme ich das gleiche Ergebnis für nur' make' oder 'make pdflatex' (und der Anwendungsfall ist dann um Motoren zu ändern, indem man sie als Ziele für 'make' spezifiziert, wie in' make lualatex'. Prost! – sdaau
Nun, es liegt an dir;) (Ich würde das eher verwirrend und schlechte Praxis finden ...) Kannst du einfach "TEXENGINE = was auch immer" machen, und einen generischen Satz von Zielen/Regeln strukturieren, die den vom Benutzer angegebenen verwenden 'TEXENGINE' Variable? –