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

Uploaded Python 3 Windows x86-64

cargo_xwin-0.13.2-py3-none-win32.whl (2.3 MB view details)

Uploaded Python 3 Windows x86

cargo_xwin-0.13.2-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.13.2-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.13.2-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.13.2-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.13.2-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (5.6 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.13.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.13.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9154f4fb2932b8a76cb8c950874e4145a31ebc82432904da5dcdfa3c5d692901
MD5 2c3ebebb2237812ad16eaa4a129b8c40
BLAKE2b-256 e254ecb2bdc51554f9efdfb92b26c0058f28b225e5d50e72591e96a57e498355

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 011cb0822f798610ef4b26d334900618369b9e3663d0afe077012243fb363067
MD5 b0d1e277cd59f63f56e2b57d060ba570
BLAKE2b-256 f05f81c9a47ad6f680b2adbf1f6ca1c44f306dd9c5b9ce23ddae25932ca915a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 8082d1d75998dc2ae19df488fb99a29e6b2097f53fe941847c02ce9a40149aca
MD5 8ed13d5ac98fb8bae16d9653ec1e9d81
BLAKE2b-256 2515958a3cd9a43c8c322e17b60df9a93ff237813b1f5acd1bcd3550370b2bb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ab0c90854782c02e446b11cf7334327674b522e22c180ae9f43cd33b862b6433
MD5 d875cdb255dcba05d4c205e070bb5e12
BLAKE2b-256 5cfd99690695bf9d5f2219de980182e952aa26632065163674a5f7dcf55dd111

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bc5c56b902381fd7a257c71dc3b271c7bc6db2cf0ea84ee1d4081e411c9daad4
MD5 2a8c926e89c85de499ef336dbae9d434
BLAKE2b-256 0ace48f1817217c6c0c85c17d71fb22b263a8d71c91e88dd038994c99306cef5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 689e475c0fd74b2abb75ccf642182d2d09ad8488316fe63a74544172c746980b
MD5 0733677cb5a44bde3bbba7b4867484e1
BLAKE2b-256 3dae48090b71cbd2f64de6f0b14b0b2d34fa05fff057ef2f8db0cbaa7d92fa76

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.13.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.13.2-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b059413d455bb37b55adff29c30c0a722aba067d2053d962153a45fd469ae6ca
MD5 b89d3bdcf8c3cff702686a52b1c93648
BLAKE2b-256 41bcbd1ada2ee51dd8a409f9cf51a20ebe45f4fcfba60424ec8022c45285d57f

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