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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

cargo_xwin-0.8.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.6 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

cargo_xwin-0.8.2-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.8.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

cargo_xwin-0.8.2-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.8.2-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (6.3 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.8.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.8.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 eae5174c3289fc48d15b74e61e754ff13d77b41240d435a32548b04b9ca6409a
MD5 e18757decd90231870388276ac790c5c
BLAKE2b-256 d8f939aced58701ea28e7421d8477a0cd9f3933924d8077628102fe322e7099f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cargo_xwin-0.8.2-py3-none-win32.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.12.12

File hashes

Hashes for cargo_xwin-0.8.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 65d6b1e0b870aece13a5c762c79c68535e868965dce2627c1eeb58f0b57c0a26
MD5 88e71f2bb4335ef9b91514abb07000a8
BLAKE2b-256 21764348c5690b787b49f39ecb964de6d5eadddcb80dfa8b5c1212ea016f5fd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.8.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 9b90b8ac31a7cfcd472ef20e5cfdf9a63a5884e62d79322c6d87aec2bee91663
MD5 5bf41331691a2b7f64a0f518a0a08c5a
BLAKE2b-256 58679ecfa7092a9b23d63d374647c31ffebf950761fb1fc6d9f47a56307984a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.8.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c176e6588659050e6f689511e1119f603a257af9a1cff5e4ebf2107606589fc7
MD5 4ce1e10789c7f96716f6402e203b73e2
BLAKE2b-256 b09d1b4a9036f16895fd9214bd883309d51840e7b1dc29a773895cfda8fa251e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.8.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 5b32a33246b5afc6a30bdad1b1f41b140613bea15bd1c1023bd825fd1c83489e
MD5 dcdce8e8d4f03c1cb8d26dea26084926
BLAKE2b-256 c08182c473571e14754c6521373a2c6e86ba7d92aa3b89792a3453f727c354be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.8.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 e80d13e7e9a44915980e5b9e376f51bedf498175789308cd306e504206da94e4
MD5 4aca9082a33dcb37a1879b492d3b09ca
BLAKE2b-256 fbcbe5b5a8c36c53919f3b3ec0c2df3784ee3b7850c815b715d14e09d1c9e04f

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.8.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.8.2-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7975b50fa9abdaaad160de96a1723434cba27b265b7f34eb826155b04f1294bc
MD5 8e5f79dacacfdf0496bf6c9ab58367c2
BLAKE2b-256 efc1ae89591c8141c93850a79783ced72b0ffe055f7024eb419a0b2d1520574e

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