【问题标题】:Why can't I use SwiftPM as a dependency using Swift Package Manager?为什么我不能使用 Swift 包管理器将 SwiftPM 作为依赖项?
【发布时间】:2020-07-11 14:34:44
【问题描述】:

我有以下 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"),
        ])
    ]
)

当我保存文件时,Xcode 会尝试自动解决依赖关系,我收到以下错误和警告:

显示所有消息 /Users/sluther/Projects/my-vapor-project/Package.swift: 包'swift-package-manager'中的产品依赖'SwiftPM'不是 找到了

: 依赖 'SwiftPM' 未被任何目标使用

【问题讨论】:

    标签: swift package-managers


    【解决方案1】:

    事实证明,在撰写本文时,当使用 Swift Tools 5.2 版删除了定义产品依赖项的旧语法时,Swift 包管理器无法作为依赖项包含在内。将 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"),
            ])
        ]
    )
    

    【讨论】:

    • 使用 swift tools 5.3 时,我仍然会发生这种情况。降级到 5.1 会引发不同的错误。我见过使用 5.2 的项目没有这个问题。还有其他建议吗?
    • @RichardWitherspoon 你解决了这个问题吗?
    • 很遗憾,我不能花更多的时间来解决这个问题,也没有弄清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多