Skip to main content

Cross compile Cargo project to Windows MSVC target with ease

Project description

cargo-xwin

formerly cargo-xwinbuild

CI Crates.io docs.rs PyPI Docker Image

🚀 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

  1. For pure Rust project, no prerequisites needed.
  2. For C/C++ dependencies, install clang (On macOS run brew install llvm and you're good to go).
  3. For assembly dependencies, install llvm-tools-preview component via rustup 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

  1. Install Rust Windows msvc target via rustup, for example, rustup target add x86_64-pc-windows-msvc
  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

cargo_xwin-0.16.2-py3-none-win_amd64.whl (3.4 MB view details)

Uploaded Python 3 Windows x86-64

cargo_xwin-0.16.2-py3-none-win32.whl (3.0 MB view details)

Uploaded Python 3 Windows x86

cargo_xwin-0.16.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (5.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

cargo_xwin-0.16.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.5 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

cargo_xwin-0.16.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (5.9 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

cargo_xwin-0.16.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (6.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

cargo_xwin-0.16.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (7.7 MB view details)

Uploaded Python 3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64

File details

Details for the file cargo_xwin-0.16.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.16.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c0a416cf1411f421a5f00af31f89a584103d0c5d12ce55696aa3c36c7edd76bf
MD5 08623ee77d968286d17d19557623b55b
BLAKE2b-256 68ba08daa855d9633dc87df6ee9e228b118ade61cdaebaad0bd50ba28673ca2e

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.16.2-py3-none-win32.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.16.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 fc369d8e77910062127f5a990198846b26d7704e90292d190d3601c827cd95af
MD5 72a31968957247554630e196400553d5
BLAKE2b-256 0695ab75899cd4529fe75596c03d567eb6f2acae68574a54cec26cee42b1a502

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.16.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.16.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c3f59002f849e9f7f7f993d513638d170cf47a23e842c93097a2c6159af27f8e
MD5 3222632d968fda97965f83d237223434
BLAKE2b-256 ed5d7799e1083b0ad9567eb810205deaac33c0f1f579cb23238cc69225a26fa8

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.16.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.16.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 259b2362613907b5d84f0a5564b0d31ffef565a00493df2820bc4436325295f4
MD5 f108111262ad9758f07eb980f79489ff
BLAKE2b-256 cdacb488e5f981887948f85064d3ae20e7a1845c92689e5fb77d884739d92db5

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.16.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.16.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 55cc289b4135d8ebb49b9165478b563db28ae3687e1b230fb1e701edc90a7df0
MD5 96b05f31d405f5ebc5fa814e763c17a4
BLAKE2b-256 021d8e5c52833b8c3282875b858bbf368e46ce2d5159176314f9644554c5c402

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.16.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.16.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 580431d222a9be858d6c2805ab4bea153ce3f5e0b87a2381cda0a0594d85fcb3
MD5 2f114b6370b63e3594e8eeb0c1bfb648
BLAKE2b-256 6fe5e23008ab34d5117b7b0b16336c8304fc517d447d61adfdd24da8bdfc7010

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.16.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.16.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 4c9e0e5606fb261157efadde13c3dbb4bc6cdc30b95fb03ccf6b082b7bd4d4ad
MD5 efd934904db1818e8de9216499fd2bb4
BLAKE2b-256 80c175c0da8b71c6f8eae3e92ab108c79b7e883cc20d5058076da4b4474c1d5a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page