cargo-piston 0.2.1

Utility tool for streamlining the configuration of rust binaries for various operating systems
cargo-piston-0.2.1 is not a library.

How to Use Cargo Piston

Once you have cargo-piston installed (either locally within a repo or globally) and your .env and Cargo.toml are properly configured, you can use cargo-piston to build and run for various targets. Your desired targets should be installed via rustup and should match your host system's architecture.

Example

rustup target add aarch64-apple-darwin

Example command for building a MacOS app

cargo piston build --target aarch64-apple-darwin

This command will build a Macos binary within a dynamically created app bundle derived from the information contained within your cargo.toml. This includes ordinarily tedious minutia such as an Info.plist and app icon configuration.

Tested & Supported Build Targets

In theory this tool should support build targets for all of the supported Operting Systems, but they will only be added explicitly after being tested. If you test any of the unsupported targets in main.rs please let me know by opening an issue on the github repo.

Windows

x86_64-pc-windows-gnu

Android

aarch64-linux-android

x86_64-linux-android

IOS

aarch64-apple-ios

x86_64-apple-ios

MacOS

aarch64-apple-darwin

x86_64-apple-darwin

Linux

aarch64-unknown-linux-gnu

x86_64-unknown-linux-gnu

Configuration

General .ENV configuration

Path to cargo binary (if not in your local PATH) example

cargo_path=/Users/<username>/.cargo/bin/cargo

If Building for Linux on MacOS

zigbuild_path=/Users/<username>/.cargo/bin/cargo-zigbuild homebrew_path=/opt/homebrew/bin

General Cargo.toml configuration

Path to App icon example

icon_path = "absolute/path/to/icon.png

Installing locally from source

Run the following command within your rust project repo to install the package locally cargo install --path ../path/to/cargo-piston

Windows Specific Configuration

Install mingw-w64 via homebrew (required on MACOS only)

brew install mingw-w64

After installing mingw-w64, add the path to the linker to your global ~/.cargo.config.toml

[target.x86_64-pc-windows-gnu]
linker = path/to/homebrew/bin/x86_64-w64-mingw32-gcc

App Icon

You must have embed-resource in your Cargo.toml as a [build dependency]

[build dependency]
embed-resource = "3.0.2"

You should have your desired output filename designated in your Cargo.toml as

[package.metadata.winres]
OriginalFilename = "<appname>.exe"

Linux Specific Configuration

Install zigbuild via (required on MACOS ONLY)

cargo install cargo-zigbuild Provide a path to your cargo dependency binaries (somewhere like ~/.cargo/bin) zigbuild_path=/Users/<username>/.cargo/bin/cargo-zigbuild

Install Zig via homebrew (required on MACOS ONLY)

provide a path to your homebrew binaries (somewhere like /opt/homebrew/bin) in your .env homebrew_path=/opt/homebrew/bin

MacOS Specific Configuration