Universal macOS Binary でビルドできるようにする

Create macOS apps and other executables that run natively on both Apple silicon and Intel-based Mac computers.

https://developer.apple.com/documentation/xcode/building_a_universal_macos_binary?language=objc

ということで、現在ベータ版である Xcode 12.2 から Apple Silicon (Arm64) のネイティブバイナリーを含んだ Universal macOS Binary でビルドできるようになったわけですが、上のページにもあるように Standard Architectures にすればできちゃうよ的なことが書かれているんですけど、どうも手持ちのソースではできないっていう。

本来であれば、ここに Any Mac (Apple Silicon, Intel) って書かれるはずなのに、インテルだけだっていう。 実際にビルドして lipo してみても、x86_64 だけでっす!って言われちゃう。

これってインテルの Mac だからそうなの?って思い、新規プロジェクトをこさえてみると、Apple Silicon も含まれている。 いよいよ設定の問題だねって勘付き、ビルド設定を見てみますってぇと、

User-Defined > VALID_ARCHS という、今どき無いだろそんなのっていう項目があり、でーん!と x86_64 と「だけ」記されておるのでした。

よってダブルクリックで開いて、x86_64 のあとに半角空白を入れ、arm64 って追記してみるってぇと、

やったね。 これでユニバーサルバイナリでビルドできますね。

lipo してみても、ちゃんと arm64 が入ってることがわかる。

それにしても VALID_ARCHS なんていつから入ってたんだろう。 プロジェクトが2013年からスタートしているんで、そりゃなんかしら入るってもんですよね。

20201022追記:VALID_ARCHS は Xcode 12 から不要になったので、project.pbxproj から該当部分(数カ所ある)を削除してもいいとのこと。