Ich versuche eine Make-Anweisung zu machen, um die Architektur zu überprüfen. Ich bin sehr nah es darum geht, zu arbeiten:Makefile bedingter Fehler
test:
ifeq ("$(shell arch)", "armv7l")
echo "This is an arm system"
else
echo "This is not an arm system."
endif
ich ein Problem haben: obwohl dies ifeq ("i386", "armv7l")
zu lösen scheint, was falsch sein sollte, bekomme ich folgende Fehlermeldung:
$ make
ifeq ("i386", "armv7l")
/bin/sh: -c: line 0: syntax error near unexpected token `"i386",'
/bin/sh: -c: line 0: `ifeq ("i386", "armv7l")'
make: *** [test] Error 2
es also, löst sich in zwei Strings auf, die miteinander verglichen werden, aber es gibt einen Syntaxfehler. Was ist hier falsch?
Wie viel klarer kann es sein? Ich versuche nur die Architektur zu überprüfen und bedingungslos Aussagen zu machen. Aber danke für die Antwort. Akzeptiert. –
Wenn Sie wirklich nur eine if-Anweisung in jede einzelne Rezeptzeile schreiben wollten, dann stimme ich zu, dass es klar ist. Meistens möchten die Leute jedoch etwas mehr als das tun, wie zum Beispiel verschiedene Compiler-Flags oder andere Compiler benutzen, verschiedene Quelldateien hinzufügen, etc. Es gibt viel elegantere Möglichkeiten, solche Dinge zu tun, als viele If hinzuzufügen - Anweisungen in all deinen Makefile-Rezepten. – MadScientist
Übrigens '==' ist auch mit '=' –