我们设计了一个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: []),
]
)