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

Vapor应用编译报错'all()仅支持macOS12+',如何指定目标系统?

解决Vapor编译时“'all()' is only available in macOS 12 or newer”错误

问题根源

你的项目最低部署目标设为macOS 10.15,但代码中调用了仅在macOS 12及以上系统才支持的all()方法;同时Package.swift里的swift-tools-version版本过低,导致你无法直接选择更高的macOS版本枚举值。

解决方案

方案1:提升项目最低部署目标到macOS 12

  1. 升级Swift工具链版本:
    把Package.swift开头的// swift-tools-version:5.2修改为// swift-tools-version:5.5或更高(Swift 5.5及以上才支持直接使用.v12这类macOS 12的枚举值,对应Xcode 13及以上版本)。

  2. 修改platforms配置:
    更新后的platforms部分代码如下:

    platforms: [
        .macOS(.v12)
    ],
    

    要是在Xcode里看不到.v12选项,检查你的Xcode版本是否为13或更高——旧版Xcode不支持这个枚举值,需要升级Xcode。

方案2:兼容旧系统,替换all()方法

如果不想提升部署目标,找到代码中调用all()的位置,替换为兼容macOS 10.15的实现:

  • 若为CaseIterable类型的all()(实际是allCases转集合),直接用Set(allCases)替代即可;
  • 若是特定API的all()(比如某些系统框架新增的静态属性),查找该API的低版本兼容写法,或者用条件编译区分版本:
    // 示例条件编译写法
    let allOptions: YourOptionType
    #if os(macOS 12.0)
    allOptions = .all()
    #else
    // 手动构建等效的选项集合
    allOptions = [.option1, .option2, .option3]
    #endif
    

额外说明

你的Ventura 13.4.1系统本身支持macOS 12+的API,但项目的部署目标决定了编译器会按最低版本做兼容性检查,所以必须调整部署目标或兼容代码才能解决错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:35:12