のーずいだんぷ

主に自分用メモですが、もしかしたら誰かの役に立つかもしれません

IntelliJ(IDE)で作成したMakefileでエラー(Makefile:2: *** missing separator. Stop.)が発生する

発生したエラー

>> Makefile
test:
    ls .

.PHONY test
make test
Makefile:2: *** missing separator.  Stop.

原因

このエラーはMakefileの各処理の内容をタブインデントで記述していないことでただしいターゲットと認識できずに発生するもの。これはMakefileの基本文法であるから問題はそこではない。 IntelliJをはじめとした統合開発環境や、VScodeのような高機能なエディタではタブの動作が変更できる。 私の場合タブキーは半角スペース4つ分に設定されており、今回のエラーが発生した。

対策

最も手っ取り早いのはMakefile専用のプラグインをインストールすること。これによりファイル名を識別子、Makefileのときのみタブ挿入に切り替えてくれる。 あとはマニュアル設定でタブキーの設定を変更する。 IntelliJの場合はMakefile supportを使用できる。

ちなみにIntelliJの場合は以下のようにエディタの一番下にある表示で確認できる。(画像の場合4 spacesとあるので半角4つ分のスペースがタブキーで入力される)

f:id:lukefone-story:20191110212732p:plain