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

Publish(by Sundell)编译时平台版本不匹配错误如何解决

报错根因

两个报错的触发逻辑是连锁的:

  • publish new默认生成的项目模板未在Package.swift中声明platforms配置,此时Swift Package Manager会为macOS目标默认设置最低兼容版本10.10,和Publish 0.9.0要求的最低macOS 12.0规则冲突,导致包解析失败。
  • 自行添加的.macOS(.v12_4)是非法枚举值:SwiftPM的平台版本枚举仅提供大版本标识,不支持小版本(如12.4)的对应枚举值,编译器无法解析该写法,进一步导致包解析中断,Xcode无法生成有效scheme和目标,自然出现「无可用设备、目标缺失」的提示。
修复操作
  • 修正Package.swift配置,替换非法的版本声明,同时对齐依赖版本和本地安装的Publish版本:
let package = Package(
    name: "MySite",
    platforms: [
        .macOS(.v12) // 仅需声明大版本,对应最低兼容macOS 12.0,满足Publish的版本要求
    ],
    products: [
        .executable(
            name: "MySite",
            targets: ["MySite"]
        )
    ],
    dependencies: [
        .package(name: "Publish", url: "https://github.com/johnsundell/publish.git", from: "0.9.0")
    ],
    targets: [
        .target(
            name: "MySite",
            dependencies: ["Publish"]
        )
    ]
)
  • 清理旧的解析缓存:关闭Xcode,在项目根目录执行以下命令删除本地缓存文件:
rm -rf .build .swiftpm xcuserdata
swift package resolve

命令执行无报错则说明包配置已正确。

  • 重新双击打开项目下的Package.swift文件,等待Xcode完成依赖解析后,即可正常选择「My Mac」作为运行目的地,缺失的scheme和目标也会自动生成。
注意事项
  • 不要尝试在Xcode的Build Settings面板中手动修改目标平台版本,SwiftPM项目的所有编译配置以Package.swift中的声明为准,手动修改的配置会在下次包解析时被自动覆盖。
  • 如果后续升级Publish版本后再次出现同类版本不匹配报错,直接调整platforms字段内的大版本号匹配依赖要求即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:03:24