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

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

Uploaded Python 3 Windows x86-64

cargo_xwin-0.10.2-py3-none-win32.whl (2.2 MB view details)

Uploaded Python 3 Windows x86

cargo_xwin-0.10.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

cargo_xwin-0.10.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

cargo_xwin-0.10.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

cargo_xwin-0.10.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

cargo_xwin-0.10.2-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (5.4 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.10.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.10.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9e25a601e877957aceb6c015c75eab449a128b6658b3504d0b2a9bce0c6c89c2
MD5 19eddfbbc961b965014a99b1b1663687
BLAKE2b-256 1bfcbb8f5e9bee36fee8fee931ac1b337332df27274d48ee6b1e02bc20232a53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.10.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 d855b54c98b00d96e80b9b846c1711b4f7434ee2d9c5cc596f4f6dce025bec2b
MD5 8055a2be4c1de618d515056216142de3
BLAKE2b-256 7d47487ba3b5724c998fbd7556b3f3cf7bcf970f530a67b503db78c17f3e914a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.10.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7178c65d7e040700d887346901ca65e62870f46a071e9faa07a341875bd189e9
MD5 b3654c2cb453ff9816d51bc2df4bc963
BLAKE2b-256 fa5da6551c74711609e06c74979f74ee8ee6eaffef1cb1a0bb1caa3c52aad207

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.10.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2fa0def1429f089c11bf2cff35377e6804e59a6be8c3c65a7c2961f6dbfde690
MD5 387d24c2600693582a676a7550c0385f
BLAKE2b-256 77fe2390f207299790aad86c71af65d362cbaf88898693bff062677dac65961e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.10.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e7e11ac4bbfb30290fe7128c22ea9e0331114a5a26a9cae45dbbf6c49f8c430a
MD5 454954c01e144380e4440aeeeca350a0
BLAKE2b-256 4cbaa639379c94885b0b429a3395a38520ee2fb08bf2adb9cc0bdf1bd88d2f80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.10.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 067d824bec1ba36a5b48dbdf821db2aa0a9ac59a292acf87963030bfd70a149f
MD5 df4d8553d434706655e047b5587f104f
BLAKE2b-256 aa5130118a120323eda264480951fbbee93f9fca829d8fa0fab6088f6166f538

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.10.2-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.10.2-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7dfca14aca134c558240e6b45025dce0f438f2de315b4b7207f6b2e9c7069ad3
MD5 077986fe5a4b17d3237403787fb08ef2
BLAKE2b-256 c287f621455842fed2029c017b1ef7b9f80fd1c169ab8dccfc5966a80ac50bce

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