rust-universal-compiler icon indicating copy to clipboard operation
rust-universal-compiler copied to clipboard

Container solution to compile Rust projects for Linux, macOS and Windows

Test Mentioned in awesome-docker

Rust Universal Compiler Docker image

Container solution to compile Rust projects for Linux, macOS and Windows.

Build the image

docker build -t rust-universal-compiler:latest .

Configure the project

To allow cross-compilation from Linux to Windows and MacOS, it is necessary to create in the project folder the .cargo/config file containing the following lines:

[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]

[target.x86_64-apple-darwin]
linker = "x86_64-apple-darwin14-clang"
ar = "x86_64-apple-darwin14-ar"

Compile the project

Compile for Linux (x86_64-unknown-linux-gnu):

docker run --rm -v $PWD/test-project:/app -w /app rust-universal-compiler:latest cargo build --target x86_64-unknown-linux-gnu --release

Compile for MacOS (x86_64-apple-darwin):

docker run --rm -v $PWD/test-project:/app -w /app rust-universal-compiler:latest cargo build --target x86_64-apple-darwin --release

Compile for Windows (x86_64-pc-windows-msvc):

docker run --rm -v $PWD/test-project:/app -w /app rust-universal-compiler:latest cargo build --target x86_64-pc-windows-msvc --release

DockerHub

Bibliography

  • https://github.com/Jake-Shadle/xwin
  • https://wapl.es/rust/2019/02/17/rust-cross-compile-linux-to-macos.html