Installation
Supported Operating Systems
- Linux
- macOS
Windows / MSVC is not supported. See architecture.md for the full scope.
Install Methods
-
From crates.io. Cabin is published as the
cabinpkgpackage on crates.io. With a Rust toolchain on$PATH, run:cargo install cabinpkgThe installed command is
cabin. -
From a third-party package manager. Community-maintained packages — not provided or endorsed by the Cabin maintainers. Repology tracks downstream availability as it appears.
-
From source. See INSTALL.md for the prerequisites and build steps. Use this when you need an unreleased revision or want to verify a build locally.
Runtime Requirements
cabin itself has no required runtime dependencies, but the
subcommands that drive the C/C++ toolchain need the relevant tools
installed on $PATH. Each tool only matters for the subcommand it
backs:
| Tool | Required by | Override |
|---|---|---|
GCC- or Clang-style C++ compiler (c++, clang++, g++) | cabin build / cabin run / cabin test / cabin tidy / cabin metadata / cabin explain build-config | CXX |
GCC- or Clang-style C compiler (cc, clang, gcc) | the same commands when the selected targets contain .c sources | CC |
ar archiver | cabin build / cabin run / cabin test / cabin tidy / cabin metadata / cabin explain build-config | AR |
| Ninja (≥ 1.10) | cabin build / cabin run / cabin test | NINJA |
pkg-config | targets that declare system = true dependencies | CABIN_PKG_CONFIG |
clang-format | cabin fmt | CABIN_FMT |
run-clang-tidy | cabin tidy | CABIN_TIDY |
cabin resolve, cabin update, cabin tree, and the graph-only
cabin explain subcommands (package, target, source, and
feature) do not require a compiler, archiver, or Ninja.
The C++ compiler and archiver are resolved when Cabin renders or
plans a build configuration. The C compiler is resolved
opportunistically and becomes required when the selected targets
contain .c sources. cabin metadata and cabin explain build-config report toolchain details, so they need the required
tool slots for that build configuration to be resolvable; their
--version capability probes are fail-soft after resolution
succeeds. Ninja is only invoked by commands that actually run the
Ninja backend. See toolchains.md for compiler
selection precedence and capability detection.