Mac M2 Ventura13.4下CMake编译报错:-mmacosx-version-min=12.5版本无效
解决方法
1. 强制使用系统自带Clang编译器
Anaconda提供的clang-10版本过于老旧,无法适配Ventura 13.4的SDK和-mmacosx-version-min=12.5参数。操作步骤:
- 删除之前生成的CMake缓存文件
CMakeCache.txt和build目录,避免缓存干扰 - 执行cmake时显式指定系统编译器路径:
cmake -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ ..
2. 调整Anaconda环境适配系统版本
如果必须依赖Anaconda环境,可通过以下配置解决版本冲突:
- 设置匹配Ventura的部署目标版本:
export MACOSX_DEPLOYMENT_TARGET=13.4 - 临时切换到系统环境,让系统工具优先级高于Anaconda:
conda deactivate export PATH=/usr/bin:$PATH
3. 修复TAPI文件链接错误
旧版clang不支持新版MacOSX.sdk中libSystem.tbd的TAPI格式,可通过以下方式处理:
- 确认Command Line Tools为Ventura对应版本,执行命令切换:
xcode-select -s /Library/Developer/CommandLineTools - cmake编译时指定SDK路径并关闭TAPI链接优化:
cmake -DCMAKE_OSX_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk -DCMAKE_EXE_LINKER_FLAGS="-Wl,-no_tapi" ..
4. 确保Rosetta 2适配x86_64编译
M2为ARM架构,编译x86_64程序需依赖Rosetta 2:
- 安装Rosetta 2:
softwareupdate --install-rosetta - cmake编译时明确指定目标架构:
cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ ..
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

