web-dev-qa-db-ja.com

MakefileでBashが異常です!

すべて、

同じMakefileがMac OS Xでうまく機能するが、Ubuntuでは機能しないことがわかりました。スニペットは次のとおりです。

start:
    @echo $(seperator)
    @if [[ "$(PROJECT)" == "" ]]; then \
         echo " Project powered by CodeMate!"; \
     else \
         echo "  $(PROJECT)"; \
     fi
    @echo $(seperator)

およびmake文句を言う:

/bin/sh: [[: not found

何か案が?

乾杯、


更新:

上記の条件付きBashステートメントを次のように変更しました。

if test "$(PROJECT)" = ""; then \

その後、問題なく動作します。それでは、「[[」の何が問題になっていますか?

5
Li Dong

Makefileはデフォルトでshではなくbashを使用します。

Ubuntuでは、shdashをポイントします。これは、POSIX準拠の最小限のシェルであり、[[キーワークを提供しません。

7
enzotib

これをMakefileの一番上に配置します:

Shell := /bin/bash # Use bash syntax

これは、[[bashの組み込みコマンドであり、shで実行しているために発生します。上記の行は、bashをmakefileで実行されたコマンドのデフォルトのインタープリターとして設定します。

7
Robin Winslow