You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apple M2处理器上CMake返回x86_64而非arm64的原因咨询

Apple M2上CMake 3.23.0识别架构为x86_64的根源与彻底解决方法

问题根源

  • CMake为x86_64版本,通过Rosetta 2运行:M2是arm64架构,但如果你的CMake是x86_64编译版本,会借助Rosetta 2兼容层运行,此时CMake会认为自身处于x86_64环境,因此CMAKE_HOST_SYSTEM_PROCESSOR返回x86_64,同时自动注入x86_64的编译链接参数。
  • 终端处于Rosetta兼容模式:即使系统是arm64,若终端通过Rosetta打开,终端内运行的所有进程(包括CMake)都会以x86_64模式执行,导致架构识别偏差。

彻底解决办法

1. 替换为arm64原生版本的CMake

  • 先检查当前CMake的架构:
    file $(which cmake)
    
    若输出包含x86_64,说明是x86_64版本,需要替换。
  • 确保Homebrew为arm64原生版本(安装路径应为/opt/homebrew,而非x86_64版本的/usr/local),然后执行:
    # 先卸载旧版本(如果有)
    brew uninstall cmake
    # 安装arm64原生版本
    brew install cmake
    

2. 切换终端为arm64原生模式

  • 打开访达,进入「应用程序/实用工具」,找到终端应用;
  • 右键点击终端,选择「显示简介」;
  • 取消勾选「使用Rosetta打开」,重启终端后再运行CMake。

3. 验证修复效果

  • 检查CMake架构:file $(which cmake),输出应包含arm64;
  • 新建测试项目,运行cmake .,查看CMAKE_HOST_SYSTEM_PROCESSOR的值应为arm64,编译时也不会自动添加-arch x86_64参数。

说明:之前手动设置CMAKE_OSX_ARCHITECTURES arm64属于临时规避方案,解决根源问题后无需再额外配置,CMake会自动适配arm64架构。

内容的提问来源于stack exchange,提问作者Arvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:12:47