Cross compile Cargo project to Windows MSVC target with ease
Project description
cargo-xwin
formerly cargo-xwinbuild
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.
- 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.8.4-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65327508fea78896fa96dd2abbba7d079e988f5223399a8310f6e2f79f8574eb |
|
MD5 | afac49705a5149d1929a3a052f78f0cd |
|
BLAKE2b-256 | 6481c6ac6178ad4b5d2cf78949012ba461d463899dbaa35c1a2082a38855e8be |
Hashes for cargo_xwin-0.8.4-py3-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07377d60ba981e1e47bb501042f8ad7c468dd320c84263c11b9a2ce0cc4d736d |
|
MD5 | 25b4ab378d65c7233b84761878c7cbfc |
|
BLAKE2b-256 | b7fc2dc3c35b8333b33a94e2d01937752f8676ae4fc53a9e090d730e986b7076 |
Hashes for cargo_xwin-0.8.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc86eacb7f6763842d91f6ba7acf7484be2b21a3ed0323d207bb268e4daed9e7 |
|
MD5 | 05e828fcd23c2933622c199c1fcb72de |
|
BLAKE2b-256 | c5d6eb467d0450ed09dfbab6e77a7a652aad4823479ff5e536c2758bed7915a3 |
Hashes for cargo_xwin-0.8.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d79b1c68025a1a08127856cdb6d990bfa56ce8c2cd003d8ee560cba2ef436df |
|
MD5 | b4bccbc4eb4cb95a8c1d35c4d24fdf68 |
|
BLAKE2b-256 | 766d6d8ac1ec071b094bd17c939017df0d70c04b324333a966d2dd48bb0bdcb7 |
Hashes for cargo_xwin-0.8.4-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83f2755b3c5807dc840be26e716f32ca9963fbd465f8dbc70a50fa6b309a341a |
|
MD5 | 8660dc9c57e83e4f11455ea61cfd2392 |
|
BLAKE2b-256 | 3b553fdfc3b0e85435adf225e323687d7bf9c85d374f6955a4fcb339f0804f72 |
Hashes for cargo_xwin-0.8.4-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e788978693ffda8dd4a1739fec5ac4006c0ae08325577c1e7c87b8678e0d825c |
|
MD5 | d4c27c2a78ae7bbbca13a6189542e738 |
|
BLAKE2b-256 | c4d84754e44690d493a73b79f13df91bcc8918441b39d9049b6ebe6826c6ad0c |
Hashes for cargo_xwin-0.8.4-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ccf9167f1daeac0f92642daae1fa19737f829658f2d9cfa6caa335dd7f2c3e66 |
|
MD5 | 4ffaa1907d3a4f41f8e6f5f12657292f |
|
BLAKE2b-256 | 4b8510a21f00b58737b22211b343d51d6c7195f08c13f990aa206ae4018134f1 |