Docker images · no Mac or Windows required
Build macOS, iOS, and Windows apps on Linux.
Two Linux containers that compile, link, and package native software
for Apple and Windows targets. Mount your sources at
/workspace
and build.
docker run --rm -v "$PWD:/workspace" \
docker.io/shepherdjerred/macos-cross-compiler:27 \
arm64-apple-macos-clang hello.c -o hello
docker run --rm -v "$PWD:/workspace" \
docker.io/shepherdjerred/windows-cross-compiler@sha256:6b35945b08c90de420111c415145487de5885b6e926c7cd6d4fe54d6d4380617 \
x86_64-pc-windows-msvc-cl /EHsc hello.cpp /Fehello.exe The macOS :27 examples require a local build. Publishing is paused; the public :latest and :15.0 tags contain an older toolchain.
macOS images run on amd64 and arm64; Windows images need amd64.
One Linux host, every desktop target.
-
Apple targets
macOS, iOS, Mac Catalyst
-
Windows targets
x64, ARM64, MSIX
-
Host
Any Linux container host
-
CI-ready
Pinned tags and digests
The images
Pick your target
Each image is a complete toolchain: compilers, SDKs, linkers, and packagers, pinned and ready to run.
-
macOS & iOS
docker.io/shepherdjerred/macos-cross-compiler
Swift and SwiftUI apps, SwiftPM packages, C, C++, Objective-C, and Rust for macOS, iOS, and Mac Catalyst. Signed Mach-O output that matches Xcode's.
- Swift 6.4 + SwiftUI macros
- applebuild .app bundles
- One tag per macOS SDK
-
Windows
docker.io/shepherdjerred/windows-cross-compiler
C, C++, Rust, and .NET for x64 and ARM64 Windows, plus WinUI 3 apps packaged as MSIX. Nothing runs on Windows and nothing is signed.
- clang-cl + lld
- cargo xwin + .NET
- WinUI 3 via a Wine image
WinUI 3 apps use a second image: docker.io/shepherdjerred/windows-cross-compiler-winui.
Shared philosophy
Vendor tools, not imitations
Both images assemble the toolchains the vendors themselves publish, and fill only the gaps where closed binaries can't run on Linux.
-
Real SDKs
Apple's macOS and iOS SDKs on one side, the MSVC CRT and Windows SDK on the other. The headers and libraries your code builds against are the vendors' own.
-
Mount and build
Sources go in at /workspace and binaries come out. No daemons, no project conversion, no Mac or Windows machine in the loop.
-
Pinned and reproducible
One macOS SDK per tag, Windows images pinned by digest. CI builds the same bits every time.