Home

Awesome

zig-ios-example

Minimal build.zig for targeting iOS with Zig toolchain.

Building

For iOS Simulator on Apple Silicon Mac:

zig build -Dtarget=aarch64-ios-simulator

For iOS Simulator on Intel Mac:

zig build -Dtarget=x86_64-ios-simulator

If you are building natively on macOS and have Apple SDKs installed for Apple platforms, the path to the SDK will be autodetected for you as part of the build script. You can still manually set the path to the SDK via --sysroot flag.

If you are cross-compiling from a different host such as Linux, or you don't have Apple SDKs installed on macOS, you will need to provide the appropriate Apple SDK such as iphoneos if targeting hardware devices or iphonesimulator if targeting the simulator. In this case, you will need to provide the path to the SDK explicitly using the --sysroot flag.

Setting the sysroot looks like this

zig build --sysroot <path_to_sdk> -Dtarget=aarch64-ios-simulator

Running in iPhone Simulator

Fire up the simulator, and then install the app with

xcrun simctl install booted zig-out/bin/MadeWithZig.app

You can run the app with

xcrun simctl launch booted madewithzig

WIP: running on an iPhone

This is more of a roadmap what I'd like the process to look like. For now, this only works for me locally as I am in possession of Jakub's secret sauce! However, I am working hard on making both zignature and zig-deploy more complete and actually functional for others, so stay tuned for updates!

zig build -Dtarget=aarch64-ios.15.4...15.4
zignature -s <path-to-cert> --entitlement <path-to-entitlements.plist> zig-out/bin/MadeWithZig.app
zig-deploy -n <name-of-your-device> zig-out/bin/MadeWithZig.app