为什么我不能使用 Swift 包管理器将 SwiftPM 用作依赖项?

slu*_*her 3 package-managers swift

我有以下 Package.swift:

// swift-tools-version:5.2
import PackageDescription

let package = Package(
    name: "my-vapor-project",
    platforms: [
       .macOS(.v10_15)
    ],
    dependencies: [
        //  A server-side Swift web framework.
        .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0-rc"),
        .package(url: "https://github.com/vapor/fluent.git", from: "4.0.0-rc"),
        .package(url: "https://github.com/vapor/fluent-mysql-driver.git", from: "4.0.0-rc"),
        .package(url: "https://github.com/apple/swift-package-manager", .branch("master")),
    ],
    targets: [
        .target(name: "App", dependencies: [
            .product(name: "Fluent", package: "fluent"),
            .product(name: "FluentMySQLDriver", package: "fluent-mysql-driver"),
            .product(name: "Vapor", package: "vapor"),
            .product(name: "SwiftPM", package: "swift-package-manager")
        ]),
        .target(name: "Run", dependencies: ["App"]),
        .testTarget(name: "AppTests", dependencies: [
            .target(name: "App"),
            .product(name: "XCTVapor", package: "vapor"),
        ])
    ]
)
Run Code Online (Sandbox Code Playgroud)

当我保存文件时,Xcode 会尝试自动解析依赖项,并且收到以下错误和警告:

显示所有消息 /Users/sluther/Projects/my-vapor-project/Package.swift:未找到包“swift-package-manager”中的产品依赖项“SwiftPM”

: 任何目标都未使用依赖项“SwiftPM”

slu*_*her 7

事实证明,在撰写本文时,使用 Swift Tools 5.2 版时无法将 Swift Package Manager 作为依赖项包含在内,该版本删除了用于定义产品依赖项的旧语法。将 Swift Tools 版本切换到 5.1 解决了这个问题。

// swift-tools-version:5.1
import PackageDescription

let package = Package(
    name: "my-vapor-project",
    platforms: [
       .macOS(.v10_15)
    ],
    dependencies: [
        //  A server-side Swift web framework.
        .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0-rc"),
        .package(url: "https://github.com/vapor/fluent.git", from: "4.0.0-rc"),
        .package(url: "https://github.com/vapor/fluent-mysql-driver.git", from: "4.0.0-rc"),
        .package(url: "https://github.com/apple/swift-package-manager", .branch("master")),
    ],
    targets: [
        .target(name: "App", dependencies: [
            .product(name: "Fluent", package: "fluent"),
            .product(name: "FluentMySQLDriver", package: "fluent-mysql-driver"),
            .product(name: "Vapor", package: "vapor"),
            "SwiftPM"
        ]),
        .target(name: "Run", dependencies: ["App"]),
        .testTarget(name: "AppTests", dependencies: [
            .target(name: "App"),
            .product(name: "XCTVapor", package: "vapor"),
        ])
    ]
)
Run Code Online (Sandbox Code Playgroud)