Skip to main content

Rust Builds

Configure how anodizer compiles your Rust binaries

The build stage compiles your Rust crate for each configured target triple.

Minimal config

crates:
  - name: myapp
    path: "."
    builds:
      - binary: myapp

This builds a single binary for the default targets.

Build config fields

FieldTypeDefaultDescription
binarystringName of the binary to build (must match a [[bin]] in Cargo.toml)
targetslistinherited from defaults.targetsTarget triples to compile for
featureslistnoneCargo features to enable
no_default_featuresboolfalseDisable default features
flagsstringnoneAdditional flags passed to cargo build
envmapnonePer-target environment variables
copy_fromstringnoneCopy build config from another crate
reproducibleboolfalseEnable reproducible build settings

Multiple binaries

If your crate produces multiple binaries:

crates:
  - name: myapp
    path: "."
    builds:
      - binary: myapp
      - binary: myapp-cli
        features: ["cli-extras"]

Custom targets

defaults:
  targets:
    - x86_64-unknown-linux-gnu
    - aarch64-unknown-linux-gnu
    - x86_64-apple-darwin
    - aarch64-apple-darwin
    - x86_64-pc-windows-msvc

crates:
  - name: myapp
    builds:
      - binary: myapp
        targets:            # override defaults for this binary
          - x86_64-unknown-linux-gnu
          - aarch64-apple-darwin

Build features

crates:
  - name: myapp
    builds:
      - binary: myapp
        features: ["tls", "compression"]
        no_default_features: true

Full example

defaults:
  targets:
    - x86_64-unknown-linux-gnu
    - aarch64-unknown-linux-gnu
    - x86_64-apple-darwin
    - aarch64-apple-darwin
    - x86_64-pc-windows-msvc
  cross: auto

crates:
  - name: myapp
    path: "."
    builds:
      - binary: myapp
        features: ["production"]
        env:
          x86_64-unknown-linux-gnu:
            CC: "gcc"