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

Uploaded Python 3 Windows x86-64

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

Uploaded Python 3 Windows x86

cargo_xwin-0.14.5-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.5-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.5-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.5-py3-none-manylinux_2_5_i686.manylinux1_i686.whl (4.8 MB view details)

Uploaded Python 3 manylinux: glibc 2.5+ i686

cargo_xwin-0.14.5-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.5-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for cargo_xwin-0.14.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 17bd46a624de32ebf4bded697efa511de22df6e3eb6dcf9f2afbc04e15db72e0
MD5 badef303c8ef84d33f67947304a5e5c2
BLAKE2b-256 c17c11257ff788bfa98618a0a7424d4ae2cea77d6f67ebe97d73cd8582a010d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.14.5-py3-none-win32.whl
Algorithm Hash digest
SHA256 810dc58f2416b29cbd9a3d592fa071f207f0a69d7d8f618cd6f934c4a2b70f93
MD5 90451392e49698297122b1ee98999294
BLAKE2b-256 42d561409bf19166e95b70da5ee64b307d0c4f2069fcc55e9f3a9415af5124f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.14.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 8774031b829464084b77d975b2588d4d2b7714471f683b02aa3aa8628550f834
MD5 1115ec6122aad56f982b46f0b67745be
BLAKE2b-256 9acee3a17ec453311cb3853e49fcc84c9f8cbdfbd45b8e16b32717111d72c063

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.14.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 92b940701d025d1d3767fb45c6d4a261974ae4c8a4da35831d333a839c04a3d0
MD5 3e6d488bc3237e3cab2a33e7568433a8
BLAKE2b-256 9bc56437d297d3788750c9f67c2dd0377dd92382335427a625abe6f49056390e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.14.5-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0b3a87b181ca5a809b65f6ce705402c541046de346f8cb29e9bfbbb8c7385f99
MD5 5aabb8cfdf340b73a13e253c3d29ff0e
BLAKE2b-256 b322a24f29bddf28f4961b14f22fd60b08cace1aa810fa0182521658a41606d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cargo_xwin-0.14.5-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 3c855fa1e0d496d87b1024a564d92e1f51997f072746a00482f698d3d6e7bd68
MD5 4ae5851dc4940f88ba640ec49c8722ae
BLAKE2b-256 ff35eaecf095a0f7ecccc17144bc1e6c2e6d1fce62e731373d9798a8d0136420

See more details on using hashes here.

File details

Details for the file cargo_xwin-0.14.5-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.5-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 07ca405fd47de597415cbbfa8eeccf8eae01bc153a1fa3988076c52c3979351f
MD5 ca58122c5f97151b00ec0e4e6981fe0d
BLAKE2b-256 1ff0e44058224d5ad6397e6f9ad9730626fcf8851c93146ddde4678883137785

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