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.13.7-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 709063ba03ec9a9665dee6d04b49f75bcf915681712d0d21909064d0877bdc01 |
|
MD5 | e1fc885b851909e24e407753d3acde27 |
|
BLAKE2b-256 | 9d5b4010aafa5e61544a2f04b778f066e02c650f6bc6a6fd4ac7646c605dd14e |
Hashes for cargo_xwin-0.13.7-py3-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0261fd139dc9adb8c75e05ad9f6d37da5cac075ac00d9a29665fd3572fcdaf2 |
|
MD5 | 9e0b9ec639238bef771175538f07dc9a |
|
BLAKE2b-256 | 8d03584cec5bc9b1fb35068061d909bafd3741d936b29de70fa14c55985a73f9 |
Hashes for cargo_xwin-0.13.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 925654c8e2a88d1afde860ae4c991aaa16da72c9f9bc7e55c2cafde0f39af68c |
|
MD5 | 6e6e64282aee8a4be57cf2498aac37ed |
|
BLAKE2b-256 | c67a9831dd0def6dd56da55453d549fdab442206e2e907c2ac8e1f076ede8343 |
Hashes for cargo_xwin-0.13.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3543331ed5048dfa1bf4d4bbead311eef1f747fe85c62e29725c65dc4c1303b |
|
MD5 | 4b4c2c710b2a0086ce5d9758ef8fc078 |
|
BLAKE2b-256 | fa84dfbdc9955a647f7385f64e3d78d4f515398b55a1994e8b40f607a47d22e2 |
Hashes for cargo_xwin-0.13.7-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13249e1eef3560dc8c3a67da9259b31cd1a8e41bebf500e49870164d65b2c7e2 |
|
MD5 | 037aa777a1cbe74ad21ea04416e8c927 |
|
BLAKE2b-256 | 367c10163b79c80abfaadf4e021ff80e8f064246243ef5b05ce22b305e1a41c5 |
Hashes for cargo_xwin-0.13.7-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9529c2875821e5cca31a31ae574692c7e4248fec79f5bfdc60b75e2ca4a49092 |
|
MD5 | c7342ccb558050578d5d6d7349464b15 |
|
BLAKE2b-256 | 6e85bb97dfc321681cb2258cd7b966158a8c7c2a15273dddff3e83ff8bd43348 |
Hashes for cargo_xwin-0.13.7-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3437bc2a814f437c69509093543f25e70308728051abd66c3ad00c5698effdef |
|
MD5 | 313d44f911fb15be24bf811c417ed65e |
|
BLAKE2b-256 | 24deb1dcfa70b8398a1c2e77cdf1afb267c56ec965316f101b97c94760d30fa8 |