使用 Swift 5 为 Swift 包管理器指定最低 macOS 版本

Specify minimum macOS version for Swift Package Manager with Swift 5

为了在不添加 #if available 的情况下使用 SwiftPM 编译一些代码,我正在使用以下参数构建项目:

swift build -Xswiftc "-target" -Xswiftc "x86_64-apple-macosx10.11"

Swift 包管理器也可以处理 Xcode .xcconfig 文件,但仅在生成 Xcode 项目时才有效。

Swift 5 中是否有一种简单的方法可以在使用 swift build 从命令行构建时指定 macOS 的最低版本?

编译错误示例:

error: 'archivedData(withRootObject:)' is only available on OS X 10.11 or newer
        let data = NSKeyedArchiver.archivedData(withRootObject: value)
let package = Package(
    name: "NAME",
    platforms: [
        .macOS(.v10_11)
    ],
    products: [
        .library(name: "NAME", targets: ["NAME"]),
    ],
    targets: [
        .target(name: "NAME"),
    ]
)

一种方法是在 SPM 中使用 Deployment Settings

Alex 的回答很有用

但是当我尝试运行一个旧项目时,仍然出错。 文件头需要修改为

// swift-tools-version:5.0

'platforms' 5.0

后有效