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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

cargo_xwin-0.10.0-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.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.9 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

cargo_xwin-0.10.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

cargo_xwin-0.10.0-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.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.10.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.10.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8b3e42a7da475a865fd23a0410689563fce2ca0183239fb22cc9d0e480baab2e
MD5 925c4f144c54d86104f0f277e32389d6
BLAKE2b-256 d75414462a731fd6d899c063f5e8e47e83fbda53b71c503e34403222e47ccfa3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.10.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 716ac38f06b5cc678ab2e10353ed260f535c3d88cb44cb4ece1e6f844e315a74
MD5 3cde3e0b1d53e568e71e970c6e2a95eb
BLAKE2b-256 d02012cfb72b74d411be91bb2c7f153f1fc98c28ff3cdff20e349b797c403888

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.10.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 8a657983249c2e2e7ff7e2f2adc56e13a29d59796acba1e7f8721f73ba77fc8d
MD5 8dc7de2479f287ac9b1213881c3f5373
BLAKE2b-256 e0fccd3005009669455ea334dc909834acf079d01ae8a112e923fd954ad272ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.10.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 39e521af594b37fe7ccfe3aba8ba58297cb79202b2ff981d4f2f677a76e109be
MD5 be83499f911f136b0011345be727d396
BLAKE2b-256 4dc6bb4b15b1ecb818853fa316663c547ec1ab8f82b95f1a23888fa17da70061

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.10.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b9c003979ff0146354f201e3bc9d91fc6624c5aa554f28df970150af61138f30
MD5 259a76399c6194a252c10e63c6400061
BLAKE2b-256 defa955f6f1412c5ca54a1efc976a67c2eebef806de6c346ae10a5714ec8ad14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.10.0-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 5668f9a3313bc944ce18f376e99710eb530ac866299475f54c06775a5f27741f
MD5 dffbbda8cf644466dac9b9004d9b68ab
BLAKE2b-256 903a66386f7526f22043e95b550359e73f20154b180bc1120b83ccc91b747676

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.10.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.10.0-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 37f28c47da6dae9d1f960edbe4efd3d7221f27a2a8bef19a02142175e2abe695
MD5 7f8f5a7f2095e96548a10e2ae25fa3bd
BLAKE2b-256 53522643ff490a3b576ac409f76afdb2a217d9e086b2ebd0cba1386f85971b4d

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