创建一个包含两个或多个目标的Swift包



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

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

import MapKitSwiftExtensions
import CustomGeospatialComputations

给人的印象是Package.swift中的第二个target可以添加到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: []),
]
)

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

// 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: []),
]
)

最新更新