Bedingungen in Makefile

HUE

Well-Known Member
Hallo,

ich bekomme einen Vergleich von Strings einfach nicht gebacken.

In einem Makefile habe ich folgendes eingetragen:

TEMPLATE = test_1
LAST_E = `cat last_entry.txt`

default: test

test:
@ echo $(LAST_E)
@ echo $(TEMPLATE)
.if $(LAST_E) == $(TEMPLATE)
echo "Gleicher Eintrag"
.else
echo "Ungleicher Eintrag"
.endif

In der Datei "last_entry.txt" steht der Wert "test_1" ohne Anführungszeichen. Wenn ich die Variable TEMPLATE ändere bekomme ich immer "Ungleicher Eintrag". Beide Variablen sind aber identisch.

Könnt Ihr mir helfen?

OS: OBSD 5.8 und bordeigenes "make"

MfG

HUE
 
Das ist ganz einfach, in $(LAST_E) steht "`cat last_entry.txt`", was natürlich ein ganz anderer String als "test_1" ist.

Wenn Du eine Variable mit dem Output eines Kommandos initialisieren willst brauchst Du !=:

LAST_E!= cat last_entry.txt
 
Hallo Kamikaze,

ich muss Dir leider mitteilen, dass "!=" zum Fehler führt. Wenn ich dies ändere zu ":=", kommt es zu keinem Fehler, aber der Vergleich geht immer noch in die Hose...

Schade,

HUE
 
Warum änderst du die Zuweisung (willkürlich) auf ":=", wenn du einen Shell-Execute haben willst? Hast du mal in die Manpage geschaut?
Ich würde mal lieber dem Fehler bei der Zuweisung via "!=" auf die Spur gehen.

Rob
 
Dann kommt es zu einem Fehler:

sh: test_1: not found
*** Warning in /var/www/htdocs/news: "`cat last_entry.txt`" returned non-zero status (Makefile:5)

test_1
echo "Ungleicher Eintrag"
Ungleicher Eintrag

Wenn ich aber die Backticks entferne, dann läuft der Vergleich fehlerfrei. Danke Rob, für das nochmalige Korrigieren.

Danke an alle,

HUE
 
Ich will hier kurz meine Verwirrung zum Ausdruck bringen: In meinem Beispiel waren keine Backticks.
 
Zurück
Oben