Cross compile Cargo project to Windows MSVC target with ease
Project description
cargo-xwin
formerly cargo-xwinbuild
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
- For pure Rust project, no prerequisites needed.
- For C/C++ dependencies, install clang.
- For assembly dependencies, install
llvm-tools-preview
component viarustup 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
- Install Rust Windows msvc target via rustup, for example,
rustup target add x86_64-pc-windows-msvc
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for cargo_xwin-0.8.7-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f78e0cbedcbb4663ecb2c81ac0960c09063ca9b7409bad147e99ba4f45bf87fa |
|
MD5 | ba896611e79b63665bf3993f164868f8 |
|
BLAKE2b-256 | e6f3630249b9ae41f2aa302a26bae26c4b5a496c3869a98073c0e0e10a28407c |
Hashes for cargo_xwin-0.8.7-py3-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df24735c1379c9a7562fd8a7686c28f3edfb3458f1fdad5ad1245eadc09a77b8 |
|
MD5 | b49de610e379c16224cc65868a051e77 |
|
BLAKE2b-256 | f52f9363511f21b003945d1c576ebc44cd0255e3d4d7f232823eded014ce26fd |
Hashes for cargo_xwin-0.8.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c893bd01878798cf2b321a9311b094e5e0a1aff76a385bebf83f4454b739ccd |
|
MD5 | 5bf794bb976758bf5ccd8493de7dbdc7 |
|
BLAKE2b-256 | 7b760aead6727d9e776d75561d4c8dea2cd4f104737b6c5f7c1ad47060b900e5 |
Hashes for cargo_xwin-0.8.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9fcb8b5ca08fd61835cae43f4220c9cf90583d9e8395fd4c2d73e611fbda784 |
|
MD5 | 8c817e514b3e9112355c62ca32b8a6a7 |
|
BLAKE2b-256 | 6349f98fa896f40a35193f137cc74e8789e9f47a2e8b59b3a443d779d3ce1464 |
Hashes for cargo_xwin-0.8.7-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | da7b677d33ea07b469db117b47cfa7cae1155fe423636cb03809f00b7b24f9f1 |
|
MD5 | 42d95985d1acfd7f1d6d74a9576a352d |
|
BLAKE2b-256 | 083b9e3c77b03c5ae70f6061a585de809b1cec21790a29687b9443f166a7512c |
Hashes for cargo_xwin-0.8.7-py3-none-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3ae72506364255acb8dce6d2533eb0b4866e23caa8b462453937e07595643b6 |
|
MD5 | c1ac60eadf06b00bd0654b14ae2afd9e |
|
BLAKE2b-256 | f228df3fe42b3354eddbc5a1362f509acebba628e468f32e54f79ed280a7b0db |
Hashes for cargo_xwin-0.8.7-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | edba1390879f27909745b9aa5a87cb89b36543d9429f3a1e5a35a8cfee5a519d |
|
MD5 | da640ad282a62a8ea57deaa59bab2de1 |
|
BLAKE2b-256 | 80d21254ec8107b0040be271b0c10d7d1d26aaf6f8118ea01f7cf2121f5e79cd |