创建一个包含两个或更多`target`s

时间:2021-01-25 15:40:07

标签: swift swift-package-manager

我们设计了一个 Swift 包,其中包括 MapKit 扩展和一些执行一些地理计算的自定义 func。预期用途是使用导入 Xcode 的单个 Swift 包来使用两个类:一个是自定义的,另一个是 MKMapView 的扩展。

是否可以创建一个包含两个或更多 target 的 Swift 包?如何正确更新 Package.swift 以支持多个目标?

import MapKitSwiftExtensions
import CustomGeospatialComputations

印象是 target 中的第二个 Package.swift 可以添加到 targets 数组中。

.library(
  name: "MapKit Swift Extensions", 
  targets: ["MapKitSwiftExtensions", "CustomGeospatialComputations"]
)

但是当 CustomGeospatialComputations 添加到 targets 数组时,我收到此错误?:

<块引用>

无法找到产品“MapKit Swift Extensions”中引用的目标“CustomGeospatialComputations”


理想情况下,我希望使用此文件结构进行开发。

.
├── Package.swift
├── README.md
├── Sources
│   └── CustomGeospatialComputations
│       └── GeoComputations.swift
│   └── MapKitSwiftExtensions
│       └── MKMapView+Extensions.swift

这是有效的Package.swift(没有CustomGeospatialComputations

// swift-tools-version:5.2

import PackageDescription

let package = Package(
    name: "MapKit Swift Extensions",
    products: [
        .library(
            name: "MapKit Swift Extensions"],
            targets: ["MapboxSwiftExtensions"),
    ],
    dependencies: [ ],
    targets: [
        .target(
            name: "MapKitSwiftExtensions",
            dependencies: []),
    ]
)

1 个答案:

答案 0 :(得分:1)

根据错误消息,我很确定您忘记在清单的 CustomGeospatialComputations 数组中定义 targets 目标。您的完整清单应如下所示:

// swift-tools-version:5.2

import PackageDescription

let package = Package(
    name: "MapKit Swift Extensions",
    products: [
        .library(
            name: "MapKit Swift Extensions",

            // Add the targets to your product.
            targets: ["MapKitSwiftExtensions", "CustomGeospatialComputations"]),
    ],
    dependencies: [ ],
    targets: [
        .target(
            name: "MapKitSwiftExtensions",
            dependencies: []),

        // Define the target for the package.
        .target(
            name: "CustomGeospatialComputations",
            dependencies: []),
    ]
)