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

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.13.7-py3-none-win_amd64.whl (2.7 MB view details)

Uploaded Python 3 Windows x86-64

cargo_xwin-0.13.7-py3-none-win32.whl (2.6 MB view details)

Uploaded Python 3 Windows x86

cargo_xwin-0.13.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.4 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

cargo_xwin-0.13.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.5 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

cargo_xwin-0.13.7-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.6 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

cargo_xwin-0.13.7-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.8 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

cargo_xwin-0.13.7-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (6.2 MB view details)

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

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 709063ba03ec9a9665dee6d04b49f75bcf915681712d0d21909064d0877bdc01
MD5 e1fc885b851909e24e407753d3acde27
BLAKE2b-256 9d5b4010aafa5e61544a2f04b778f066e02c650f6bc6a6fd4ac7646c605dd14e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.7-py3-none-win32.whl
Algorithm Hash digest
SHA256 a0261fd139dc9adb8c75e05ad9f6d37da5cac075ac00d9a29665fd3572fcdaf2
MD5 9e0b9ec639238bef771175538f07dc9a
BLAKE2b-256 8d03584cec5bc9b1fb35068061d909bafd3741d936b29de70fa14c55985a73f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 925654c8e2a88d1afde860ae4c991aaa16da72c9f9bc7e55c2cafde0f39af68c
MD5 6e6e64282aee8a4be57cf2498aac37ed
BLAKE2b-256 c67a9831dd0def6dd56da55453d549fdab442206e2e907c2ac8e1f076ede8343

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d3543331ed5048dfa1bf4d4bbead311eef1f747fe85c62e29725c65dc4c1303b
MD5 4b4c2c710b2a0086ce5d9758ef8fc078
BLAKE2b-256 fa84dfbdc9955a647f7385f64e3d78d4f515398b55a1994e8b40f607a47d22e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.7-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 13249e1eef3560dc8c3a67da9259b31cd1a8e41bebf500e49870164d65b2c7e2
MD5 037aa777a1cbe74ad21ea04416e8c927
BLAKE2b-256 367c10163b79c80abfaadf4e021ff80e8f064246243ef5b05ce22b305e1a41c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.7-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 9529c2875821e5cca31a31ae574692c7e4248fec79f5bfdc60b75e2ca4a49092
MD5 c7342ccb558050578d5d6d7349464b15
BLAKE2b-256 6e85bb97dfc321681cb2258cd7b966158a8c7c2a15273dddff3e83ff8bd43348

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.13.7-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.13.7-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 3437bc2a814f437c69509093543f25e70308728051abd66c3ad00c5698effdef
MD5 313d44f911fb15be24bf811c417ed65e
BLAKE2b-256 24deb1dcfa70b8398a1c2e77cdf1afb267c56ec965316f101b97c94760d30fa8

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