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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

cargo_xwin-0.16.3-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.3-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.3-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.3-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.3-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.3-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.16.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7edb88857975df591e8137192dd8518d08f11c5e965b57cceb1551f08734e683
MD5 736540ec7484af322a11261337e87f58
BLAKE2b-256 e55293db0dd8b6765c9a6508babad3e9c34b34119eeb28c9d5ce185a04b7af3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.16.3-py3-none-win32.whl
Algorithm Hash digest
SHA256 1470d08820ddb73811d2ebf1189017505ba83ac88276dab445e51a008bc41b44
MD5 16bbab9556422ced2e4f0465a4d1ac91
BLAKE2b-256 3254f5caa9084d273d06220eb18dd32893d0ff3ee5f42c2ef46b1c6e5965c00a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.16.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 77bbbc59dd7ec9f975fead9e880ded16940c186d84f528dee8f2279c2610ebba
MD5 a6bb15114e51ab6007ab2ff4707bb092
BLAKE2b-256 5525a284c11538bb8576b30845ff27098a630825c400bb6b553ebe74e1014c4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.16.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0a15dbeb951e8316327e4cc36502251273697588e3bde961d7c72f592b391ac3
MD5 ee5c07766f36d0665e3de2e22e743565
BLAKE2b-256 461854e3c121c09b24575529d5223162dc5994a50b6ef6ac6cab63f3f1ffa899

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.16.3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 cb37cf0ec215c0d743433c6de3d8ae93d05b604a57aeacb85c0839f97aea2618
MD5 cef9966d2a91841e2f0bed74efb6aeed
BLAKE2b-256 024c5b402fbf1f46686c139881aeb1559302d46d9be3ca0c45cc79e4e8cbc3f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.16.3-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 d1a5af70ed1eda1b621f8115c00afb7aa456145391a27bddf36eb293a97e35e3
MD5 ec4453d8ff6f14ddb289a62b9ebe8de3
BLAKE2b-256 9212d2f947cc63af7b3cf9c2c44ff70d21551d56ece71d2cbccb60fbe9cdb01d

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.16.3-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.3-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 f6844d3cfbad61a89e9737b1a17636bccb0f74319044dee196d13f0d3d5d771c
MD5 ed9b6ecf3eba17041010bdebaa52f704
BLAKE2b-256 87e958d8898c0daa28257ab87b2e0eb5858a4986ad022d00a9efd0482fd0512d

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