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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

cargo_xwin-0.13.1-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.13.1-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.1-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.1-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.1-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.1-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.13.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b4090263e30ea0f118367c60c09ffc396ee842aa8b4e06d123ef6b74623356e1
MD5 1b73707f1e81e6dce0998209bb884796
BLAKE2b-256 ae5e99fd13a95b79b836b0e05a31fb053be973afd402771e77d8089c01378f25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.1-py3-none-win32.whl
Algorithm Hash digest
SHA256 1ab2f88dc05b0a6f8a946be6a3b608d756be43d1acf4bf4e7e8a2a9b701a46f5
MD5 dde0e4acec2273c4751b624c75da4eb8
BLAKE2b-256 efb4321634d49fa83712495324f0d60b3f8b6f61e8b62294e8fbfa6737fde03a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 692dcd07a5be8366767589f7d490e03775cdea56d5fcf4e2a00307e587fe84e4
MD5 a0746bc22a8988227eb8f51996a070d1
BLAKE2b-256 49ef5aa44f0228aa11036b59b6338531618bba55063b3ee8749fdd5d7a62c4b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 de3fe43186ccdc100904797682c29798ef30ecb7dbf05bd66d6a1ded517138f1
MD5 544a7487c9551748a1961c75869ed785
BLAKE2b-256 4fa274f536115c4c47b0e5b9045d82c034fbc99edb89895aaf6704442d36a2ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 79eca69c0ad5280ddd144d7f2a1544dfd494d144431fae6bba86ada5d156e985
MD5 38cae1eff6c8b3aaa3d23e22302bd946
BLAKE2b-256 80966cbd2a381b7c9b6f6d20bc67240bca10c984e234ad8d80d551f34b666335

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.13.1-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 211827c6bf8e38acdbb7805065df50b944da313d61c8a012c745a70525a1f973
MD5 836db6b7f816d12ab6a3ed27a220e3c1
BLAKE2b-256 2740d74892d2b9a34e5d2a34c6b66891674b1e6223eb6d675d14af399ca79f74

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.13.1-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.1-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 66596d600e05fdd613b0290bca97db059f0cf9a1ffd474095a29dcf7a51ece0f
MD5 3cdf5bc4320ad45249a3c1d80af86183
BLAKE2b-256 0bea87abbd8f5a8ac96d856ead6279a1667601cbfab175c5976123a061bcf266

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