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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

cargo_xwin-0.12.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.12.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.12.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.12.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.12.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.12.2-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.12.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0c76f9ab8df963abd8995733b6e947ceb797f46c21925b37129dad3de615fd69
MD5 c9905f0bef5bb5ebb4b60bc999be74f0
BLAKE2b-256 ca09f467c48f022dfaa6145add95eb439f7aa5d54f1b93479f0af9a7eefd82da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.12.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 e9cfb806c18a13421dabfdf7c3d0d3061b590601c1463465ba27a91da3bc1f92
MD5 ee726f68e56a4d8788947d1eb09fbb0d
BLAKE2b-256 9a32e3292cbd35ff81a2c6f60918830a0afb481c2f67ce96ca7e5dbac8707eef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.12.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7dc394977b2e1d71749672beb69f2b8c58b631f004bb95c282be1067c2c6c42a
MD5 cd7e378c77a869f973e490f0e90d88c6
BLAKE2b-256 a6d75551e64bd6556be0c391614ed5b808052849404b64b6e5345731449e9aec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.12.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7434da4daa4a596a53643e550a0df2015027399f3b8669c7475c107c87824ba5
MD5 02535c91c4d191b3388d358bba20fe59
BLAKE2b-256 8e5594239d18b224d64d1c1f9986b91e169fcdf2e5682de5e5b2362594b91644

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.12.2-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c145a8d081abb12f7a9c8166b852fd0c60e21eba18e6a60f24ed59a8ef54c2f7
MD5 c8514297cdb4cbfd2353311e7027b29d
BLAKE2b-256 87ec6efae2f8ed94291a94226bd0a64e713bb3d92a6c563a90bdb3ef435200a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.12.2-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 f9a5d572426455a2d1f06e4e3d4d4bb9c979624f4affaf5801786f88f68f7513
MD5 a3489729f0d1b23b01fd5d3422781b54
BLAKE2b-256 478e626cb0c7d7cf944ade2239f9aa501f15a69ce4fcb596005f89f63021d879

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.12.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.12.2-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5747129010e72260aaf0cc8a0ecded8ed65014c7bf2b7f822f440273dfd9b7a8
MD5 15546ff4bfc96901683199758fd28614
BLAKE2b-256 039141a9670ffc7f63efa83143189f5b91fff29508ab601cd46cb5f858815b74

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