TL;DR

Rust 製のタスクランナー。各タスクを Makefile.toml に書く。Rust での開発向けのツールだが、汎用的にも使える。

なぜ必要か

Makefile と比べて、TOML で書くぶん文法が分かりやすい。スクリプトを同じファイルに書けるので、タスクのための小さなスクリプトファイルが乱立するのを防げる。タスクで使う cargo のサブコマンドがインストールされていなければ、自動でインストールしてくれる。

仕組み

Cargo でインストールして使う想定だが、バイナリ単体でも配布されているので直接インストールすることもできる。

$ cargo install --force cargo-make
$ cargo make --version
cargo-make 0.37.18

タスクは cargo make some-task の形式で実行する。Cargo でインストールすると、cargo make と同じ働きをする makers コマンドも入るので、makers some-task とも書ける。

例

環境変数は、すべてのタスクに共通のものを [env] に、タスクごとのものを extend で追加する。

# cargo-make で実行するコマンド全体に共通で設定する環境変数
[env]
GLOBAL = "global env"
 
# extend でタスクごとに追加できる環境変数
[tasks.set-env-local.env]
LOCAL = "local env"
 
# cargo make run (makers run) で実行されるタスク
[tasks.run]
extend = "set-env-local"
command = "cargo"
args = ["run"]

関連

出典