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

在Apple M1(arm)设备上用CMake编译macOS-x86_64程序的正确方法?

正确实现方案

1. CMake 标准架构配置(无需手动修改编译参数)

CMake 原生提供 CMAKE_OSX_ARCHITECTURES 变量专门用于指定 macOS 构建目标架构,是官方推荐的标准方案,优先级高于手动添加的 -arch 参数,会自动传递到编译、链接全流程,不需要分别给 Debug/Release、C/C++ 单独加参数。

你可以选择以下两种方式中的任意一种配置:

  • 写入顶层 CMakeLists.txt:在文件最开头(project 指令之前)添加如下内容
set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "Target macOS x86_64 architecture" FORCE)
  • 仅在构建时传入参数,无需修改项目代码:CMake 配置阶段添加参数 -DCMAKE_OSX_ARCHITECTURES=x86_64

2. CLion IDE 适配配置(无需手动执行 arch 命令)

完成上述 CMake 配置后,只需要调整 CLion 工具链和构建配置即可完全使用 IDE 原生功能:

  • 打开「偏好设置 > 构建、执行、部署 > 工具链」,新增一个工具链,命名为 x86_64 macOS,CMake 路径选择 x86 版本 brew 安装的路径(默认是 /usr/local/bin/cmake),C/C++ 编译器选择对应 x86 版本的 clang/clang++ 路径(默认是 /usr/local/bin/clang、/usr/local/bin/clang++),保存配置。
  • 打开「偏好设置 > 构建、执行、部署 > CMake」,新增构建 Profile(如 Debug x86_64、Release x86_64),工具链选择刚才创建的 x86_64 macOS,如果没有在 CMakeLists 写入架构配置,就在「CMake 选项」栏添加 -DCMAKE_OSX_ARCHITECTURES=x86_64。
  • 若需要在 CLion 内直接运行程序,打开对应运行配置,勾选「使用 Rosetta 运行」选项即可,无需手动加 arch -x86_64 前缀。

之前手动加 -arch 参数不生效的核心原因是 CMake 默认识别宿主架构为 arm64,内置的架构配置优先级高于手动添加的编译参数,因此依然按 arm64 架构执行构建流程,才会出现链接架构不匹配的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:11