Cross compile Cargo project to Windows MSVC target with ease
Project description
cargo-xwin
formerly cargo-xwinbuild
🚀 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
- For pure Rust project, no prerequisites needed.
- For C/C++ dependencies, install clang (On macOS run
brew install llvm
and you're good to go). - 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.13.1-py3-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4090263e30ea0f118367c60c09ffc396ee842aa8b4e06d123ef6b74623356e1 |
|
MD5 | 1b73707f1e81e6dce0998209bb884796 |
|
BLAKE2b-256 | ae5e99fd13a95b79b836b0e05a31fb053be973afd402771e77d8089c01378f25 |
Hashes for cargo_xwin-0.13.1-py3-none-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ab2f88dc05b0a6f8a946be6a3b608d756be43d1acf4bf4e7e8a2a9b701a46f5 |
|
MD5 | dde0e4acec2273c4751b624c75da4eb8 |
|
BLAKE2b-256 | efb4321634d49fa83712495324f0d60b3f8b6f61e8b62294e8fbfa6737fde03a |
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 |
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 |
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 |
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 |
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 |