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

Xcode 14 beta运行CMake无法识别C/C++编译器问题咨询

问题触发原因

该问题是Xcode 14签名规则变更与旧版本CMake的适配冲突导致的:

  • Xcode 13及更早版本中,Command-line Tool(命令行工具)类型的构建目标默认允许空签名,无需配置开发者身份即可完成编译
  • Xcode 14 beta版本开始调整了默认校验逻辑,所有命令行工具类型目标强制要求配置有效签名身份,空签名会直接抛出构建错误

CMake在执行编译器检测环节时,会自动生成CompilerIdC、CompilerIdCxx两个临时命令行工具目标,用来验证本地C/C++编译器是否可用。旧版本CMake生成这两个临时目标时没有配置任何签名相关参数,刚好触发Xcode 14的新校验规则,导致编译器检测流程失败,最终对外抛出「找不到CMAKE_C_COMPILER/CMAKE_CXX_COMPILER」的报错,错误日志里提到的空身份签名失败就是直接根因。

可行修复方案

按优先级从高到低排列:

  • 升级CMake到3.24及以上版本
    CMake官方在3.24版本已经完成Xcode 14的适配,生成Xcode项目时会自动给临时编译器检测目标配置跳过签名的参数,直接执行原命令cmake -G Xcode ..即可正常生成项目,不需要额外加参数,是长期最优方案。
  • 执行cmake命令时手动追加签名配置参数
    如果暂时无法升级CMake,可以在生成项目时追加参数,临时关闭签名校验:
    cmake -G Xcode .. \
      -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY="" \
      -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=NO \
      -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO
    
    该配置会对生成的Xcode项目全局生效,除了解决编译器检测阶段的报错,后续项目内不需要上架签名的命令行工具目标也可以正常编译。
  • 配置Xcode全局默认签名(不推荐)
    在Xcode设置-Locations页面中,给Command Line Tools选择本地已有的有效签名身份,该方案会修改Xcode全局构建配置,可能对其他项目的构建逻辑产生非预期影响,仅作为临时应急方案使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:36:14