Je cette Makefile
:/bin/sh: 1: Erreur de syntaxe: mot inattendu (attendre ")")
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
Je veux d'abord vérifier, si le répertoire tmp
existe ou non, et de le créer seulement, s'il n'existe pas. Cela fonctionne, mais avec une erreur étrange:
ifeq (yes,yes)
/bin/sh: 1: Syntax error: word unexpected (expecting ")")
Makefile:7: die Regel für Ziel „version“ scheiterte
make: *** [version] Fehler 2
Pourquoi cette erreur /bin/sh: 1: Syntax error: word unexpected (expecting ")")
étrange? Et comment résoudre cela?
Il semble que ce devrait juste être 'version: $ {TMP_DIR}' et $ {TMP_DIR}:; mkdir -p $ {TMP_DIR} '. – melpomene
'mkdir -p' crée le répertoire seulement s'il n'existe pas déjà. – Beta
FYI, le comportement de 'echo -n' n'est pas défini par POSIX (POSIX explicitement * autorise * un' echo' à modifier son comportement sur la base d'un drapeau '-n' - contrairement à' echo -e', qui est en violation s'il n'imprime pas '-e' sur la sortie - mais ne spécifie pas son comportement quand ce drapeau est donné). Pensez à utiliser 'printf% s foo' au lieu de' echo -n foo'. –