1. ホーム
  2. makefile

[解決済み] ifeq の Make エラー: 予期しないトークン付近のシンタックスエラー

2023-02-24 19:52:17

質問

一箇所だけ文字列照合を行うMakefileを書いているのですが、以下のようなコードです。

if test ...; \
    then \
    shell scripts... \
fi

ifeq ($(DIST_TYPE),nightly)
    shell scripts ...
endif

ここでは、最初の if はシェルスクリプト、2番目の ifeq はGNU Makeの条件です。しかし、以下のようなエラーが発生する。

ifeq (nightly,nightly)です。

/bin/sh: -c: line 0: 予想外のトークン `nightly,nightly' の近くでシンタックスエラーが発生しました。

/bin/sh: -c: 0行目: `ifeq (nightly,nightly)'.

ここで何が起こっているのでしょうか?Makeがシェルを呼び出そうとしているようです。

どうすれば解決するのでしょうか?

条件文をインデントしないで書くとよいことがわかりました。

インデントがない場合、Makeはそれ自体をディレクティブとして扱い、そうでない場合はシェルスクリプトと見なします。

コード例

間違っています。

target:
    ifeq (foo, bar)
        ...
    endif

正しい。

target:
ifeq (foo, bar)
    ...
endif