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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

cargo_xwin-0.17.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.9 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARMv7l

cargo_xwin-0.17.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.2 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

cargo_xwin-0.17.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (4.3 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ x86-64

cargo_xwin-0.17.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.1 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

cargo_xwin-0.17.2-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.17.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.17.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3bc21fa544b428cf0f34428f032fe1033ad2f74722e065fc6e2034c96c0ff940
MD5 11444092881e466063ba355767df71d4
BLAKE2b-256 393e344e3d0868be769f40d5149f52d52aae421d13a4dd5f9ba58caab5b62def

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.17.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 ee3b66f4f6e7af020763fdc701de12e4b0b4500e45ea31865e4bbaad213b1ba0
MD5 f049c97ec06d1f8c44f3975706ee997d
BLAKE2b-256 f3ebc0c2dda9b347725d1145be919be33b0f5290e79cc323544ecc9e82601d9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.17.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 895df42e37a1b9109d783863132a548f60b0c79b14ed8094a01a162235d58700
MD5 3ca0571b80988916005b15cef96cc40f
BLAKE2b-256 c0feb75a4881b63406c6207f5578dab8a9d1754ad3cbdc79e9f5f205d045630a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.17.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1da58bed88660196bc3625a52ba004ebbc91b7c56a4a0fd7b82cfd5bc6b67871
MD5 13a4c9eeb45d1e9b74b1abe772d28558
BLAKE2b-256 b9d6d5a3e16ba92cf5c1338835f737a4ce5b8453016740ed1d6a0ca37a9e6bf4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.17.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a3550bfdf9d8e8f8a1b6de19a02dd391cb4fddb9da5c4210ee361d5234ed7833
MD5 48010bd0099508187ac0839bcf76b849
BLAKE2b-256 c61044e795c50900bb1a123315d84d4aeb82d5089aec89be3c61399fdfe8e765

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.17.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 d16e5eeb12e75cb3eed55bef1909bd5dcafc657a650280b9454e1efc7b8dd123
MD5 c029c3b84b7576e6644a2b4b12b61fdf
BLAKE2b-256 cbd713e724529da789f3fe539ece9384d136ae0b14a868c952285ce3f08b51b4

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.17.2-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.17.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 a0901ac0c6d075fc2f04d35d9027d23f64ab18adbe4a1a65cadf400b9151c7c7
MD5 0c0c4294f88d77ec4a09052cabf0c718
BLAKE2b-256 0da23fb80b0aba3a95200c637abee30e3bf74a5be32e6a0d2a19d7ddc5972732

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