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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

cargo_xwin-0.9.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

cargo_xwin-0.9.0-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.9.0-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.9.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.3 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

cargo_xwin-0.9.0-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.9.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.9.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 af3351cda5afdb13059f3ad6a3fc232602db170a099cf5938e0cf7befac10d28
MD5 b8a064d3717eab3788f8fecf0735b687
BLAKE2b-256 33b973e04abd4c57e34dbd59a95c0a6fe54b2ac3a031546f36c1eb518c50704e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for cargo_xwin-0.9.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 fed26227b885c852518a00a36ef78f2b7b56a076c4c09f0de69649b28a2eabda
MD5 fe8c34cf1fa8df80b72727ea6a544571
BLAKE2b-256 979600e4e7869aa4ef45f7f77bdea28bfd194ece5b477cf39d70bceab262d47c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.9.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 07798a0dccbf8aabc853000bb48ce2d824c252a4a97078f478284e779de695fa
MD5 f247369d5b2268d82267a50c9da84a86
BLAKE2b-256 ff7757e3c78b5930b36c946600c37b90ee5cbc32b3b55737667f5c821341e919

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.9.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 55e4c53571cfc438734d5df96bcd74ae9ff88367e51a3ae1bffa78b2efc48488
MD5 47d037149a19d5f0928d05a863aaf4bf
BLAKE2b-256 fde55b63f1a9de2ac4dcfeaaa57df49a581ae01cefdd5c52daae31eb47d77c61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.9.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3b297ff2346afff9ca7cd657143c1f5efd86092b4f795f5d84d70b8aa82d02fc
MD5 d6a367efe66b1b94675e3a7897d5e98c
BLAKE2b-256 a6a15efed4cb5abf68874efb941e6901464cf03245a7c21ac25aefc34571287d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.9.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 0d901dbe819427ba7c459d98c7b867e9c16bed0e59aaaab62ac274b061776a49
MD5 5a6b5f80e62b68fc89cae26b67baf7e9
BLAKE2b-256 8626af7ea4b84185223d226cf76ab865de9742a6396779296c3281b7e6364c8a

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.9.0-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.9.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f1874da80272779c075073b381c324d69288ea865c66388a7e22eae0f6898f33
MD5 25b4a9af37e08d6bbd5df95cc2dd0279
BLAKE2b-256 89cd233372bc48459d2b4cf75732ed1b57734b9b4b89a45e3d12c339f3ae24e9

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