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

如何为单个SPM目标指定平台限制?

Swift Package 单个Target指定平台方案

当然可以给单个Target单独指定平台限制,完全能满足你说的分Target适配不同平台的需求。

具体实现方式

在Package.swift中,直接给每个Target单独配置platforms参数即可,包级别的platforms仅作为未单独配置的Target的默认值,单个Target的配置优先级更高。

以下是贴合你场景的示例代码:

// swift-tools-version: 5.9
import PackageDescription

let package = Package(
    name: "YourPackage",
    // 包级别可选配置,为未单独指定平台的Target提供默认值
    platforms: [
        .macOS(.v13),
        .iOS(.v16),
        .tvOS(.v16),
        .watchOS(.v9)
    ],
    products: [
        .library(name: "Full", targets: ["Full"]),
        .library(name: "BackendModels", targets: ["BackendModels"])
    ],
    targets: [
        // 依赖UIKit的Full Target,仅限定iOS和tvOS
        .target(
            name: "Full",
            platforms: [
                .iOS(.v16),
                .tvOS(.v16)
            ],
            dependencies: ["BackendModels"]
        ),
        // 后端模型Target,支持多平台
        .target(
            name: "BackendModels",
            platforms: [
                .macOS(.v13),
                .iOS(.v16),
                .tvOS(.v16),
                .watchOS(.v9)
            ]
        ),
        // 测试Target也可按需单独配置平台
        .testTarget(
            name: "BackendModelsTests",
            dependencies: ["BackendModels"]
        )
    ]
)

关键注意点

  • 单个Target的platforms配置会直接覆盖包级别的设置。
  • 如果不需要包级别的默认平台,可直接删除包的platforms属性,仅给需要的Target单独配置。
  • 存在依赖关系的Target(比如Full依赖BackendModels),要确保被依赖的Target支持当前Target的所有平台,否则会出现编译错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:45:34