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.9.1-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b4b7653d99fa17d760603e6c77026487cb4196e03f2ad4f4c7fee4bf09bdef7 |
|
MD5 | 298fa1398b96a9b3b7af19b2e2b416b0 |
|
BLAKE2b-256 | 7fd85be2e4d4345f7273333ea10c15f619e83fc6b4ee2dd2e8d739d58e8f5a38 |
Hashes for cargo_xwin-0.9.1-py3-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ca4ce63d75b87399c42e8b0eeb644e1f9f8d0a8dad46fa1e03c542e3fd54b6d |
|
MD5 | 4bc4f0a506a186af8a84a18950749b3f |
|
BLAKE2b-256 | e0cd59a59f91f9b2e8d694981e4b04f61396b5e8172f47e0ae730d76c9988340 |
Hashes for cargo_xwin-0.9.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39583c6f3467b0789d82c70ca224d7f8d827436eba1f5c5e2c3b7d560e19de0b |
|
MD5 | efbc02f49fac6228abe1d21e456eafee |
|
BLAKE2b-256 | 41fe3eff71e2dd8742d664b970816c9e869e538e6d6f511ec9f1a30205f7b68e |
Hashes for cargo_xwin-0.9.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ac72d6aa579a4376cd2d6fed1103370e02bb46ef4ed195b4a45951c321a4b6f |
|
MD5 | fed4b2ec0c1a866ba4a397081dcc48c9 |
|
BLAKE2b-256 | 9bb569ada83b573b6cb1cfbb0a8cfaf6de53415c2b1f3fd969d20de0e057527c |
Hashes for cargo_xwin-0.9.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70c6c66bbaeecbe8da434f57c08068e086677f35187b20122f3b44f2e3b2c3f4 |
|
MD5 | 4c1d04aa2b1af531c758a5eefb812e01 |
|
BLAKE2b-256 | 4f4ffb05ec4b94aef440d48f3ef2680250e08f2a0caa08395e0977fc9d137603 |
Hashes for cargo_xwin-0.9.1-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3703ef9f14bf0fa08f319878e6574c5a85e58e34bf78a413760b0c28d903e9ad |
|
MD5 | c9afd9b9beaa642df29bddc0cdd877d8 |
|
BLAKE2b-256 | ffe0e5f0cadfc763cfd832bb27ffd4de3d439b7bc08fb485350aec64a8f0aa49 |
Hashes for cargo_xwin-0.9.1-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb0797ff12c521d233292fe6b58b5c5ccbecc204419464db469bc5a44458f1d8 |
|
MD5 | 290ca15a6735933cac5bbbb165614b49 |
|
BLAKE2b-256 | 7ffb75737572dca8ad0cd5006607dc62c5ff0a8870a35d91e8a04b45f82ebad5 |