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.6-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 921f292e3484ab8edf065465176ca0e366c948bdce06c8003ab937266126b112 |
|
MD5 | 7ea7cdba59264c727c36c15af48fea38 |
|
BLAKE2b-256 | f632b29931e481cd20039d184a8e2927a529c27787ac01520d33963e1b72857c |
Hashes for cargo_xwin-0.13.6-py3-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aad8d9a430286198b90db82a1e1548adfb6363fea8171566bd5f3294735af8f0 |
|
MD5 | f12a34011afffb731a947e471693b18f |
|
BLAKE2b-256 | 710ace89200938f3e85ae7433ea71d8518475ea5c77313281c794e627852bde4 |
Hashes for cargo_xwin-0.13.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5045dc28abeca40b42a1692a53919541e6b63e697cfc7b1e911c992641e5c84a |
|
MD5 | 1ff002bd1021ae53ee238a030342b166 |
|
BLAKE2b-256 | e341723f025f4c4132a900e221ef998bbbed7df0bbe5ea58f678a8fdedfcdc75 |
Hashes for cargo_xwin-0.13.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 224d9dd1db23e9af36960cbc8dc2723990b1a00d98685e45f60e9aa0c5c0a70b |
|
MD5 | 9349b63d847a6c73bd68bf0096f45961 |
|
BLAKE2b-256 | b4b330c85c2747320a90ec4c832978334b4b65568bf2f6b74416dad266d8acbd |
Hashes for cargo_xwin-0.13.6-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9be0249447c924add43b04f0de28d0c572ad496c23695fe99adb946a7163e006 |
|
MD5 | bfebd353ea8994927291af4440301826 |
|
BLAKE2b-256 | ac15a03b5d96da72ac7fe5a8caff56329081361afd49f42b530671dbf73c6c4a |
Hashes for cargo_xwin-0.13.6-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a9ee453a3782d02d8d03402842fcb21307ae8db7b2f69a0b07d5233813ea8a3 |
|
MD5 | 387f8096119115a4fd97fb2a3d4cb675 |
|
BLAKE2b-256 | fb58ec14d59ba0ea68802fadbd2ae95063df944a382e50028e37c60935ffc858 |
Hashes for cargo_xwin-0.13.6-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11fa45417ec5e3cc56109073e9bdeb163eb892eecbd87cbea83ec5e13941aa8c |
|
MD5 | 9b755a1692caa18bb06e9695a8e4e9af |
|
BLAKE2b-256 | 943555176274b43bdd478efcdd64f0fe618294c18de80799bbcef90183ad1ab8 |