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 |
XWIN_INCLUDE_DEBUG_LIBS |
--xwin-include-debug-libs |
Whether or not to include debug libs in installation (default false). |
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.16.4-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de29ea68ef5396eb946a2c5dae476d3bf2cceb262690cc5f46aa23c48a99bc6e |
|
MD5 | b9a2f0bebb9d3da7791fcc377de9600a |
|
BLAKE2b-256 | 9d596bdcf610235efdca266cec30143251ba7437ef42b9235cca6cb486f3c45b |
Hashes for cargo_xwin-0.16.4-py3-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3338fef15647e00dc35f07fc73c5f046a16c4116d22d2e8fc5042c8bf817903b |
|
MD5 | 63865ef2699f7eb65b78fafa21a1f1f9 |
|
BLAKE2b-256 | 4172c261e448e970316f2680903390b4cef7c5fb25d70711d339d6b1853c18e8 |
Hashes for cargo_xwin-0.16.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 726d0aa8e374177383812d756072fe6a0496da526f4e9764dbf931f6a45cd36c |
|
MD5 | 56dead0fcdd5aacc4c4f106d67561a1f |
|
BLAKE2b-256 | 3719b42c8591d10a1f92093affc30349cd3a8edb94229746e1b1068779593fc4 |
Hashes for cargo_xwin-0.16.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74e5fa28929e173c08fd2f9ab485ccca11e9695420a811aa4b2609b1eb95ba4b |
|
MD5 | 184ca8d3151469f76576a52adf958c60 |
|
BLAKE2b-256 | ba61c8e2bea92671fbff3525f62d50e01487eec97f21ca9e08e7eedd713d16de |
Hashes for cargo_xwin-0.16.4-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb8cf91bd54e4b994d03dbf06777d49408b86e262696c8b4f62bc7f4c3e10ce1 |
|
MD5 | 07ff50cf6fe6a929146b096eb3319051 |
|
BLAKE2b-256 | 7b1594372f2a3e21d63fcd83937eccb8f9fb77960ec5537e9e72d52289166604 |
Hashes for cargo_xwin-0.16.4-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b5467f42641022c972a9b4dc3c36eeed7a7f9674d41c5e6ac27a8d5abe6cf8b |
|
MD5 | 03b1fbe02b26b3a91c439a1006a7bb36 |
|
BLAKE2b-256 | e722b75762c34e0c874e9fb3d165c8921bc402f64e2b72ad2b69187522a4450f |
Hashes for cargo_xwin-0.16.4-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0efbe456f4cf3d1e8861b3b076acc02c39d12fb15c1ac3201fbc593136ecff66 |
|
MD5 | 2f31be0de418ff4ffd3bed32c089895c |
|
BLAKE2b-256 | 312e61d29f871ad87da9fffde9838f8d4b4aa311205d01e6ca65890aea5e00d5 |