tout,
J'ai constaté que le même Makefile fonctionne bien sous Mac OS X mais ne fonctionne pas sous Ubuntu. L'extrait est le suivant:
start:
@echo $(seperator)
@if [[ "$(PROJECT)" == "" ]]; then \
echo " Project powered by CodeMate!"; \
else \
echo " $(PROJECT)"; \
fi
@echo $(seperator)
et make se plaint:
/bin/sh: [[: not found
Une idée?
À votre santé,
Li
Mises à jour:
J'ai changé les instructions Bash conditionnelles ci-dessus en:
if test "$(PROJECT)" = ""; then \
alors les choses fonctionnent bien. Alors, quel est le problème avec "[["?
Les makefiles utilisent sh
par défaut, pas bash
.
Dans Ubuntu, sh
pointe sur dash
, un shell minimaliste et conforme à POSIX, ne fournissant pas le travail de clé [[
.
Placez ceci au sommet de votre Makefile
:
Shell := /bin/bash # Use bash syntax
Cela est dû au fait que [[
est une commande intégrée de bash
et que vous l'exécutez avec sh
. La ligne ci-dessus définira bash
comme interpréteur par défaut pour les commandes exécutées sur le fichier makefile.