需要显式管理 Swift Package 嵌套依赖项吗?

Tru*_*an1 7 swift swift-package-manager xcode11

我正在将我的 Carthage 库移动到 Swift Package Manager。如果我的 Swift 包依赖于其他 Swift 包,我是否必须像使用 Carthage 一样将这些库显式链接到项目中,或者嵌套依赖项是否嵌入在 Swift 包中?

Moj*_*ini 0

您可以为每个依赖项(如果不存在)创建一个目标,然后将它们添加为依赖项。例如,看看这个:

let package = Package(
    name: "SMUIKit",
    products: [
        .library(
            name: "SMUIKit",
            targets: ["SMUIKit"]),

        .library(
            name: "SMStyleKit",
            targets: ["SMStyleKit"]),
    ],
    dependencies: [
        .package(name: "ExistDependency", url: "https://github.com/mojtabahs/ExistDependency", from: "5.0.0"),
    ],
    targets: [
        .target(
            name: "SMUIKit",
            dependencies: ["SMStyleKit"]
        ),

        .target(
            name: "SMStyleKit",
            dependencies: ["ExistDependency"],
            resources: [.process("Resources")]
        ),
    ]
)
Run Code Online (Sandbox Code Playgroud)

在此package.swift

  1. SMUIKitSMStyleKit是该包创建的库。
  2. ExistDependency是一个已经存在的包。
  3. SMUIKit取决于生成的SMStyleKit.
  4. SMStyleKit取决于SMStyleKit

我试图涵盖一些依赖情况,但您可以研发更多关于如何实现您的需求的信息。