Cross compile Cargo project to Windows MSVC target with ease
Project description
cargo-xwin
formerly cargo-xwinbuild
🚀 Help me to become a full-time open-source developer by sponsoring me on GitHub
Cross compile Cargo project to Windows msvc target with ease.
By using this software you are consented to accept the license at https://go.microsoft.com/fwlink/?LinkId=2086102
Prerequisite
- For pure Rust project, no prerequisites needed.
- For C/C++ dependencies, install clang (On macOS run
brew install llvm
and you're good to go). - For assembly dependencies, install
llvm-tools-preview
component viarustup component add llvm-tools-preview
or install llvm.
Installation
cargo install cargo-xwin
You can also install it using pip:
pip install cargo-xwin
We also provide a Docker image which has wine pre-installed in addition to cargo-xwin and Rust, for example to build for x86_64 Windows:
docker run --rm -it -v $(pwd):/io -w /io messense/cargo-xwin \
cargo xwin build --release --target x86_64-pc-windows-msvc
Usage
- Install Rust Windows msvc target via rustup, for example,
rustup target add x86_64-pc-windows-msvc
- Run
cargo xwin build
, for example,cargo xwin build --target x86_64-pc-windows-msvc
Run tests with wine
With wine installed, you can run tests with the cargo xwin test
command,
for example, cargo xwin test --target x86_64-pc-windows-msvc
Customization
The Microsoft CRT and Windows SDK can be customized using the following environment variables or CLI options.
Environment Variable | CLI option | Description |
---|---|---|
XWIN_ARCH |
--xwin-arch |
The architectures to include, defaults to x86_64,aarch64 , possible values: x86, x86_64, aarch, aarch64 |
XWIN_VARIANT |
--xwin-variant |
The variants to include, defaults to desktop , possible values: desktop, onecore, spectre |
XWIN_VERSION |
--xwin-version |
The version to retrieve, defaults to 16, can either be a major version of 15 or 16, or a <major>.<minor> version |
XWIN_CACHE_DIR |
--xwin-cache-dir |
xwin cache directory to put CRT and SDK files |
CMake Support
Some Rust crates use the cmake crate to build C/C++ dependencies, cargo-xwin will generate a CMake toolchain file automatically to make cross compilation work out of the box.
ninja is required to enable CMake support.
License
This work is released under the MIT license. A copy of the license is provided in the LICENSE file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for cargo_xwin-0.14.3-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a988413e20fa892479ed994da600de3d86f0e8b983e1ecaf4ad963c4d4c39da7 |
|
MD5 | fb43bb939cb4f25ea629ee7f14feed5c |
|
BLAKE2b-256 | c578cabedbbc8f25181ded6cd5febf345eb2722b2b47617ec185e3c6336f4e16 |
Hashes for cargo_xwin-0.14.3-py3-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7783df8e005be71aec90c43c846ff7db8ed780619fdbead7be50ac6b0e149612 |
|
MD5 | 2b56c39a055c40da1481bd378bdcdaee |
|
BLAKE2b-256 | 71c465b592929bffaf104d980b8bd777b3492ad6cd5ea0cdc089122ab24fc4d9 |
Hashes for cargo_xwin-0.14.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b0e2354b7632efe058dbcd9e311624608a1bc7b9361eb572a9fb36ac066c3df |
|
MD5 | ab9f74ca659e091a7e12ddeac7a1e80a |
|
BLAKE2b-256 | b948a2f2c49073558b5384dd27a4039015561b5adbfe45d23e694806d8470bdb |
Hashes for cargo_xwin-0.14.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0a67ccf58b4d7873ca1a274473c69863d2ddcdd79980efc3799b16394c08c16 |
|
MD5 | 40abb1076787d423bebafbbe832d0739 |
|
BLAKE2b-256 | b0d3ff0cc15b694ecac39d03bc4a693e6e7db490107d74fed07e43759b49b78d |
Hashes for cargo_xwin-0.14.3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 88654a4bff8b8462401f84b1cb2fbc12465d231d65b8354c1ba3d9e323616a02 |
|
MD5 | 77d58b69a7d60ab8d30b838c9546a5a8 |
|
BLAKE2b-256 | 0ca84275d65beb8f34fe611fe14f03aa8fb8f2e6b70e107211a4da2252990bbc |
Hashes for cargo_xwin-0.14.3-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f850aa258cc7d15ac11f6cd1f1fe7f6d2de62c04067ca656b90fe9ee407632f |
|
MD5 | fe316f599d75ed61c6c20d7c6279cf47 |
|
BLAKE2b-256 | bdae45888ce1c243994aefe04ed886e343978bc2f573cd1a665a44757f55794d |
Hashes for cargo_xwin-0.14.3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7448174120fefc6f9133514bad15244de3b9fdfde656d927fe305a75e96888bc |
|
MD5 | c659975dfa9dd5b87ebc5853d54be973 |
|
BLAKE2b-256 | fce62e0137842f02a9e0f6e968fcf262d7a2137548761d1f2e06ca517d63a35b |