🦊

Android StudioでMakefileを利用する際の注意点

2023/03/30に公開

要点

Android StudioでMakefileを利用する場合、タブのスペース変換に注意しましょう。

.editorconfigでMakefileのインデントスタイルを設定することで解決できます。

詳細

Flutterで開発している際に、freezedなどのパッケージを利用していると以下のような生成コマンドを実行することがあると思います。
flutter pub run build_runner build --delete-conflicting-outputs

このコマンドを覚えられなかったため、以下のようなMakefileをプロジェクト直下に作成しコマンドの短縮化しました。

Makefile
build-runner:
	flutter pub run build_runner build --delete-conflicting-outputs

ところが、Android StudioのTerminal上で
make build-runner
を実行すると、以下のようなエラーで動きませんでした。
Makefile:2: *** missing separator. Stop.

原因は、Android Studioの設定でタブがスペースに変換されてしまうためでした。
Preference>Editor>Code Style>Other File TypesのUse tab character

Use tab characterにチェックを入れてもいいのですが、他のファイルのインデントがタブになるのは避けたい場合もあるかと思います。
そういった場合は、.editorconfigをプロジェクト直下に作成し、Makefileのみタブインデントになるように設定します。
以下は、一例です。

.editorconfig
root = true

[*]
indent_style = space
indent_size = 2

end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

[Makefile]
indent_style = tab

設定後Makefileを確認し、タブインデントになっていれば、
make build-runner
のようなmakeコマンドが実行可能になるかと思います。

最後に

長いコマンドや頻繁に使うコマンドはMakefileを利用することで、短縮できたりメモがわりになるかと思いますので、おすすめです。

Discussion