【问题标题】:How do I declare the Siesta Swift package as a dependency of another Swift package?如何将 Siesta Swift 包声明为另一个 Swift 包的依赖项?
【发布时间】:2020-08-27 14:52:48
【问题描述】:

我正在尝试使用 Swift 包 Siesta 作为我正在构建的包的依赖项,并在我的包代码中引用它。我已经在Package.swift 文件中确定了如何将包导入我的项目,这很简单:

dependencies: [
    .package(url: "https://github.com/bustoutsolutions/siesta", from: "1.5.1")
],

这会导致包被复制到我的包中就好了。我遇到的问题实际上是将它链接到我的包,所以我可以import 它并在代码中引用它。我知道我需要将它实际链接到我的目标

我已经阅读了一些其他的包文件,因为 Siesta 的包名是这样的

let package = Package(
    name: "Siesta",

而且它声明的产品是这样的

products: [
    .library(name: "Siesta", targets: ["Siesta"]),
    .library(name: "SiestaUI", targets: ["SiestaUI"]),
    .library(name: "Siesta_Alamofire", targets: ["Siesta_Alamofire"]),
],

我应该能够在我的包文件的目标中执行此操作以使用它

.target(
    name: "MyTarget",
    dependencies: [.product(name: "Siesta", package: "Siesta")]),

但是当我尝试构建我的包时,我得到一个错误:

/Users/blahblah/Desktop/MyPackage/Package.swift:目标“MyTarget”的依赖项中的未知包“Siesta”

不仅如此,我的包上的单次运行方案的所有目标都丢失了,如果不丢弃所有本地版本控制更改,我就无法再次构建。这里发生了什么?

【问题讨论】:

    标签: ios swift swift-package-manager siesta-swift


    【解决方案1】:

    使用 Swift 工具 5.2 版时,您必须在声明包依赖项时提供名称参数。

    .package(name: "Siesta", url: "https://github.com/bustoutsolutions/siesta", from: "1.5.1")
    

    Package.swift 文件的工作示例:

    // swift-tools-version:5.2
    // The swift-tools-version declares the minimum version of Swift required to build this package.
    
    import PackageDescription
    
    let package = Package(
        name: "MyPackage",
        products: [
            .library(
                name: "MyLibrary",
                targets: ["MyTarget"]),
        ],
        dependencies: [
            // make sure to provide a `name` argument here
            .package(name: "Siesta", url: "https://github.com/bustoutsolutions/siesta", from: "1.5.1")        
        ],
        targets: [
            .target(
                name: "MyTarget",
                dependencies: [
                    .product(name: "Siesta", package: "Siesta")
                ]),
        ]
    )
    

    来源:https://forums.swift.org/t/package-names-in-swift-5-2/34886/6

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 2019-03-11
      • 2018-08-16
      相关资源
      最近更新 更多