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

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

Uploaded Python 3 Windows x86-64

cargo_xwin-0.14.3-py3-none-win32.whl (2.5 MB view details)

Uploaded Python 3 Windows x86

cargo_xwin-0.14.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.4 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

cargo_xwin-0.14.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

cargo_xwin-0.14.3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.6 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

cargo_xwin-0.14.3-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

cargo_xwin-0.14.3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (6.2 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.14.3-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.14.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a988413e20fa892479ed994da600de3d86f0e8b983e1ecaf4ad963c4d4c39da7
MD5 fb43bb939cb4f25ea629ee7f14feed5c
BLAKE2b-256 c578cabedbbc8f25181ded6cd5febf345eb2722b2b47617ec185e3c6336f4e16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.14.3-py3-none-win32.whl
Algorithm Hash digest
SHA256 7783df8e005be71aec90c43c846ff7db8ed780619fdbead7be50ac6b0e149612
MD5 2b56c39a055c40da1481bd378bdcdaee
BLAKE2b-256 71c465b592929bffaf104d980b8bd777b3492ad6cd5ea0cdc089122ab24fc4d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.14.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 2b0e2354b7632efe058dbcd9e311624608a1bc7b9361eb572a9fb36ac066c3df
MD5 ab9f74ca659e091a7e12ddeac7a1e80a
BLAKE2b-256 b948a2f2c49073558b5384dd27a4039015561b5adbfe45d23e694806d8470bdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.14.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f0a67ccf58b4d7873ca1a274473c69863d2ddcdd79980efc3799b16394c08c16
MD5 40abb1076787d423bebafbbe832d0739
BLAKE2b-256 b0d3ff0cc15b694ecac39d03bc4a693e6e7db490107d74fed07e43759b49b78d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.14.3-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 88654a4bff8b8462401f84b1cb2fbc12465d231d65b8354c1ba3d9e323616a02
MD5 77d58b69a7d60ab8d30b838c9546a5a8
BLAKE2b-256 0ca84275d65beb8f34fe611fe14f03aa8fb8f2e6b70e107211a4da2252990bbc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.14.3-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 7f850aa258cc7d15ac11f6cd1f1fe7f6d2de62c04067ca656b90fe9ee407632f
MD5 fe316f599d75ed61c6c20d7c6279cf47
BLAKE2b-256 bdae45888ce1c243994aefe04ed886e343978bc2f573cd1a665a44757f55794d

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.14.3-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.14.3-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 7448174120fefc6f9133514bad15244de3b9fdfde656d927fe305a75e96888bc
MD5 c659975dfa9dd5b87ebc5853d54be973
BLAKE2b-256 fce62e0137842f02a9e0f6e968fcf262d7a2137548761d1f2e06ca517d63a35b

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