I have a fat iOS library which supports both real devices (arm64...) and iOS simulator of Intel Mac (x86_64). But when I switched to M1 mac, things get tough.
If I use the old library, I will fail with error saying xxx.a (xxx.o) building for iOS Simulator, but linking in object file built for iOS, file 'xxx' for architecture arm64. It seems that I have to build a xcframework which contains binaries for different destinations.
So I tried to build different slices and hope to bundle them as a xcframework. But I finally found I don't know how to build the x86_64 slice with a M1 Mac.
My question is
- how to build a static library on M1 mac that supports iOS simulator of Intel Mac?
- Or was my thinking wrong from the beginning?
The reason I failed to get x86_64 slice on M1 Mac is that there is a legacy option in my build setting: Valid architectures.
Remove this configuration and run standard flow. Then you will get library containing x86_64 architecture smoothly.
If your library code is not organized as a Xcode project but uses clang toolchain underneath. You can refer to this link. In a nutshell, specify target in a format like arm64-apple-ios14.3-simulator