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.5-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45acec1a67eefa20e0fcdb4123f8def4c3d08c5d351d5a6d460b889d933a90aa |
|
MD5 | 2646f631974c2ef79620f75bd18a5ff2 |
|
BLAKE2b-256 | add78b577f24c40259f250d979ce4eae5bef9d1fa18979b0a362dee2c66202aa |
Hashes for cargo_xwin-0.8.5-py3-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd859cb71e7802affa2912000c85e86e7561ce830346580b16333186e92b7fde |
|
MD5 | 11805da56c03d834fcd2da19a5ec268c |
|
BLAKE2b-256 | 2f6604d7ed4f35f34ffcb4e6c8cf21791ecc8e3988bb8853160ceab3734ee877 |
Hashes for cargo_xwin-0.8.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c4d2df839bf5859d18c10fea2349f609a758521a34d94e4424f7eac796b643b |
|
MD5 | 1d103f6cb2c09866e6b28fae291f8967 |
|
BLAKE2b-256 | 63fa2eda21968a2fd95c2a79d84d57e13ccadac1925bc7869a89a138f2be643a |
Hashes for cargo_xwin-0.8.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3697cd9982b82b5758827e395cdce0c48038680feffe3c715703532189218efa |
|
MD5 | a26ca1f44ae02b32506b737bced8c683 |
|
BLAKE2b-256 | bbd8a6cb8cd7d26142b01490dfb63b235afb4f30a957204c865259c2e846c9a9 |
Hashes for cargo_xwin-0.8.5-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5f0c40e5e4bbd7312de6b739c759cf508b3dba925694ede691cd57cead4fe9d |
|
MD5 | d3cc9ac7121e5088f7e626fb660e949e |
|
BLAKE2b-256 | 20a155ec76849afbed374840dda3a97e937ad9cd2472fd7f91dbaf7d04955c1e |
Hashes for cargo_xwin-0.8.5-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90e0c215b0f31d6d97c4c2d7c50155e7168aa02a382aa2005386c1d6f5dd8839 |
|
MD5 | 15216922f52490f30635ca764d1dc769 |
|
BLAKE2b-256 | b293a22383365bd74f797d6bcbe137d86ed490f072b862d1c22787e7f71d854b |
Hashes for cargo_xwin-0.8.5-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d08efd1916fd575860e8b8bbd7861d7d883dd40ebb4903fa3a4388c1f131ab31 |
|
MD5 | 5f2c1cd8f888e4fb3235391754168f54 |
|
BLAKE2b-256 | 05e8e06fa1f58c599bf15634d40d72c239bf1e255de5d0a4d9d41b19fd41c82d |