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
 
Zurück
Oben