What it is
cargo-make is a Rust task runner and build tool. It lives in the Rust and Cargo ecosystem, and it is distributed as a cargo subcommand.
The project solves the problem of coordinating repeated build, coverage, and automation steps without scattering shell snippets across repositories. It lets a team describe tasks, dependencies, aliases, commands, scripts, and sub tasks in makefiles, then run them consistently across local workstations and continuous integration services such as GitHub Actions, Azure Pipelines, CircleCI, and AppVeyor.
Key capabilities
- Tasks can declare dependencies, aliases, commands, scripts, sub tasks, default tasks, and extended tasks, so a workflow can be organized as a set of related tasks instead of a single shell line.
- Scripts can use Duckscript, Rust code, a cross-platform shell, other programming languages, and shebang support, which gives teams several ways to write task logic.
- Environment variables can be declared globally, per task, on the command line, from an env file, and from setup scripts, with a documented loading order and working-directory setup.
- Conditions can be based on criteria, scripts, or and/or/group-or expressions, can combine with sub tasks, and can run tasks only if sources changed.
- Dependency installation can cover Cargo plugins, crates, rustup components, and native dependencies, with version definitions, global version locking, alternate cargo install commands, installation priorities, and multiple installations.
- Workspace support includes composite flow, profiles, skipping or including specific members, workspace emulation, and automatic extension of a workspace makefile.
Who uses it and how
- Rust developers use it as a cargo subcommand to define local build, coverage, and automation workflows that can be run from the same project root.
- Continuous integration maintainers use it on GitHub Actions, Azure Pipelines, CircleCI, and AppVeyor to standardize commands across jobs and reduce duplicated inline script logic.
- Workspace owners use profiles, composite flow, and member selection to run tasks across multiple crates while still targeting specific members when needed.
Getting started
Install cargo-make from Arch Linux packages, a binary release, or the crates.io package, then invoke it as a cargo subcommand from a Rust project. Define a makefile with tasks, dependencies, and scripts, and run the desired task from the command line.
When to use it — and when not to
Use cargo-make when a Rust project needs a Cargo-native task runner with makefiles, workspace profiles, conditions, and dependency installation. The provided facts do not list paid products it replaces, nor a hosted option, Docker image, database, storage, or SMTP requirement, so users must install and maintain the tool through the listed package or binary-release methods. The repository shows 89 open issues.