Ich habe diese Makefile
:/bin/sh: 1: Syntaxfehler: Wort unerwartet (erwartet ")")
TMP_DIR := tmp
RUN_OR_NOT := $(shell date '+%y%m%d%H%M')
all: version
version:
ifeq ($(shell test -d ${TMP_DIR} && echo -n "yes";),yes)
$(shell echo ${TMP_DIR} already exists ...)
else
$(shell mkdir -p ${TMP_DIR})
endif
ich zuerst überprüfen möchten, ob das Verzeichnis tmp
vorhanden ist oder nicht, und es schaffen nur wenn es nicht existiert. Dies funktioniert, aber mit einem seltsamen Fehler:
ifeq (yes,yes)
/bin/sh: 1: Syntax error: word unexpected (expecting ")")
Makefile:7: die Regel für Ziel „version“ scheiterte
make: *** [version] Fehler 2
Warum gibt es diese seltsamen /bin/sh: 1: Syntax error: word unexpected (expecting ")")
Fehler entdeckt? Und wie löst man das?
Das sieht aus wie es sein sollte nur Version: $ {TMP_DIR} 'und' $ {TMP_DIR}:; mkdir -p $ {TMP_DIR} '. – melpomene
'mkdir -p' erstellt das Verzeichnis nur, wenn es nicht bereits existiert. – Beta
FYI, das Verhalten von 'echo -n' ist nicht POSIX-definiert (POSIX explizit * erlaubt * ein' echo', sein Verhalten basierend auf einem '-n' Flag zu modifizieren - Kontrast mit' echo -e', was ist in Verletzung, wenn es nicht '-e' auf Ausgabe ausgibt, aber sein Verhalten nicht angibt, wenn dieses Flag angegeben wird. Verwenden Sie 'printf% s foo 'statt' echo -n foo'. –