如何不用Makefile通过Xcode GUI构建支持Apple Silicon与Intel的通用二进制程序?
Xcode 构建双架构通用二进制方案
本方案全程使用Xcode原生功能实现,无需引入Makefile。
配置修改步骤
- 打开目标Xcode项目,选中左侧导航栏的项目根节点,在中间编辑区域选中需要编译的Target
- 进入Build Settings面板,在搜索框输入
Architectures,将配置值设为Standard Architectures (arm64, x86_64)(对应变量为$(ARCHS_STANDARD)),不要手动指定单一架构 - 搜索
Build Active Architecture Only,将Release模式对应的配置值改为NO,Debug模式可保留YES不影响日常调试 - 搜索
Excluded Architectures,确认该配置项下没有手动添加arm64或x86_64的排除规则 - 清空历史编译缓存:按住
Option键点击顶部菜单栏的Product选项,选择Clean Build Folder,也可以直接使用快捷键Shift + Command + K - 重新点击
Product -> Build执行编译,生成的产物即为同时支持Apple Silicon和Intel架构的通用二进制程序
架构有效性验证
编译完成后右键点击「Products」分组下的应用文件,选择Show in Finder:
- 右键.app文件选择「显示包内容」,进入
Contents/MacOS目录找到可执行文件 - 打开终端输入
file(末尾带空格),将上一步找到的可执行文件拖入终端后回车执行 - 若命令输出同时包含
x86_64和arm64两种架构信息,说明通用二进制构建成功,示例输出如下:
/Applications/YourApp.app/Contents/MacOS/YourApp: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]
注意事项
- 如果项目引入了第三方静态库、动态库或其他外部依赖,需要确认所有依赖本身也同时支持x86_64和arm64架构,否则最终编译产物无法实现双架构兼容
- 所有配置正确的前提下,仅需在Apple Silicon设备上完成一次编译即可生成通用版本,无需在Intel设备上单独编译
截图说明
所有配置项都可以在Xcode的Target Build Settings面板通过顶部搜索框输入对应关键词直接定位,无需跳转外部页面查看:
内容的提问来源于stack exchange,提问作者Peter Silie
相关产品推荐
相关产品推荐

