theBanana19
theBanana19

Reputation: 161

macOS build universal binary 2 with CMake

How would I build a Universal Binary 2 that supports both Intel and Apple Silicon using CMake/Make? I have found some documentation here - https://developer.apple.com/documentation/xcode/building_a_universal_macos_binary - but that uses XCode, which i'm not using in my project. Thanks!

Upvotes: 16

Views: 14118

Answers (1)

Dmitry
Dmitry

Reputation: 2158

To create a universal binary set the following variable

CMAKE_OSX_ARCHITECTURES=arm64;x86_64

If you use CMake GUI press "Add Entry" and then set Name to CMAKE_OSX_ARCHITECTURES, Type=String, Value=arm64;x86_64

Then Configure->Generate->make. Here is the output you should see after building (my exe name is sprint_5)

>> file sprint_5          
sprint_5: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]
sprint_5 (for architecture x86_64): Mach-O 64-bit executable x86_64
sprint_5 (for architecture arm64):  Mach-O 64-bit executable arm64

Upvotes: 29

Related Questions