Holen Sie exit-code 1 auf Makefile if-Anweisung
Ich versuche, den exit-code auf der ifdef-Anweisung, wenn die Aussage nicht stimmt, aber ich habe versucht, durch die Verwendung von Ausgang 1 und $(call exit 1)
wenn mit dem ersten auf der folgenden code, den ich bekommen "Makefile:11: * missing separator. Stoppen".
...
ifdef PACKAGE
PACKAGEDIR = $(HOME)/$(PACKAGE)
else
exit 1
endif
...
Mithilfe $(call exit 1)
ich bekomme keine Fehler aber die makefile immer noch ausführen.
Was ich versuche zu erreichen, ist verlassen Sie das Makefile auf den anderen mit dem Fehler code 1
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als geekosaur sagt, man kann nicht setzen Sie ein shell-Befehl, wie
exit 1
als ein makefile Betrieb. Makefiles sind nicht shell-Skripte, aber Sie können enthalten shell-Skripte. Shell-Befehle können nur innerhalb einer target-Rezept, und nirgendwo sonst.Wenn du eine ausreichend neue version von GNU-make können Sie die
$(error ...)
Funktion, wie diese:Beachten Sie auch, dass
ifdef
wird wahr, wenn die variable definiert ist, auch wenn es definiert einen leeren string. Vielleicht möchten Sie lieber:um sicherzustellen, das die variable auf einen nicht-leeren Wert.
Und es ist möglich, Ihre version von GNU-make ist zu alt, um die Unterstützung der
$(error ...)
Funktion, obwohl es herum für eine lange Zeit jetzt.Kann man nicht einfach die bare-code kleben irgendwo in einem Makefile; code (wie
exit 1
) ist immer im Zusammenhang mit einer build-Regel in irgendeiner Form.In diesem Fall möchten Sie die
$(Fehler)
- Funktion. Es kann nicht ausreichend sein, legen Sie es in dieelse
, obwohl, aus dem gleichen Grund, dassexit 1
selbst nicht arbeiten; Sie müssen möglicherweise neu zu formulieren, die ganze Sache alsmake
). Ihre "fyi" verwechselt wird; eine variable, definition ist nicht Teil von einem Ziel-in der Tat, ich war versucht, Ihnen zu sagen, dass Ihr versucht zu beenden erfordern wird, in ein Ziel. Phrasierung, was Sie wollen, ist tatsächlich etwas schwierig werden, da musst du dich wirklich zwingen, expansion irgendwo, die zum auslösen einesmake
Funktion (auch$(error)
). Mit:=
wie ich Sie bearbeitet haben, die Antwort zu tun kann helfen.else
Zweig. Beachten Sie das Leerzeichen vor der)
. Welche version von Make verwenden Sie?