|new 0.18.1||Dec 3, 2023|
|0.18.0||Nov 22, 2023|
|0.17.5||Nov 13, 2023|
|0.17.0||Jul 29, 2023|
|0.7.1||Mar 31, 2022|
#30 in Cargo plugins
36,661 downloads per month
Used in 4 crates (2 directly)
🚀 Help me to become a full-time open-source developer by sponsoring me on GitHub
cargo install cargo-zigbuild
You can also install it using pip which will also install
pip install cargo-zigbuild
We also provide a Docker image which has macOS SDK pre-installed in addition to cargo-zigbuild and Rust, for example to build for x86_64 macOS:
docker run --rm -it -v $(pwd):/io -w /io messense/cargo-zigbuild \ cargo zigbuild --release --target x86_64-apple-darwin
- Install zig following the official documentation,
on macOS, Windows and Linux you can also install zig from PyPI via
pip3 install ziglang
- Install Rust target via rustup, for example,
rustup target add aarch64-unknown-linux-gnu
cargo zigbuild, for example,
cargo zigbuild --target aarch64-unknown-linux-gnu
Specify glibc version
cargo zigbuild supports passing glibc version in
--target option, for example,
to compile for glibc 2.17 with the
cargo zigbuild --target aarch64-unknown-linux-gnu.2.17
macOS universal2 target
cargo zigbuild supports a special
universal2-apple-darwin target for building macOS universal2 binaries/libraries on Rust 1.64.0 and later.
rustup target add x86_64-apple-darwin rustup target add aarch64-apple-darwin cargo zigbuild --target universal2-apple-darwin
Note that Cargo
--message-formatoption doesn't work with universal2 target currently.
- Currently only Linux, macOS and Windows gnu targets are supported, other target platforms can be added if you can make it work, pull requests are welcome.
- Only current Rust stable and nightly versions are regularly tested on CI, other versions may not work.
Known upstream zig issues:
- zig cc: parse
-mtuneflags according to clang: Some Rust targets aren't recognized by
zig cc, for example
armv7-unknown-linux-gnueabihf, workaround by using
-mcpu=genericand explicitly passing target features in #58
- ability to link against darwin frameworks (such as CoreFoundation) when cross compiling:
SDKROOTenvironment variable to a macOS SDK path to workaround it
- zig misses some
compiler_rtfunctions that may lead to undefined symbol error for certain targets. See also: zig compiler-rt status.
- CPU features are not passed to clang
This work is released under the MIT license. A copy of the license is provided in the LICENSE file.