Swift 包编译器问题
Swift Package Compiler Issue
我有一个项目有 4 个 Swift 包依赖项。包A、B、C、D。每个包都使用前面的包作为依赖。
我遇到的问题是,由于包 B 中的错误实际上并不存在,因此包 D 存在编译问题。 (Cannot find type 'CustomType' in scope)
作为包 B 和 xcode 项目,我在两者中使用的包都工作正常。
这妨碍了我的工作效率,因为编译器无法在包 D 中工作。
我试过删除派生数据、清理构建文件夹、重置包缓存,none 成功了。我假设我做错了什么,但我不知道它是什么。
let package = Package(
name: "PackageD",
defaultLocalization: "en",
platforms: [
.iOS(.v13),
.macOS(.v10_15)
],
products: [
.library(
name: "PackageD",
targets: ["PackageD"]),
],
dependencies: [
.package(url: "PackageA", "0.0.1"..<"1.0.0"),
.package(url: "PackageB", "0.0.1"..<"1.0.0"),
.package(url: "PackageC", "0.0.1"..<"1.0.0"),
],
targets: [
.target(
name: "PackageD",
dependencies: [
"PackageA",
"PackageB",
"PackageC"
],
resources: [.process("Resources")]
),
]
)
看起来有一些不同的结构需要使用 UIKit。这意味着 UIKit 需要能够被导入。这在 xcode 项目中不是问题,但在基于其他包构建的包中是问题。
向所有需要它的文件添加 #if canImport(UIKit)
和 #endif
解决了问题。
我有一个项目有 4 个 Swift 包依赖项。包A、B、C、D。每个包都使用前面的包作为依赖。
我遇到的问题是,由于包 B 中的错误实际上并不存在,因此包 D 存在编译问题。 (Cannot find type 'CustomType' in scope)
作为包 B 和 xcode 项目,我在两者中使用的包都工作正常。
这妨碍了我的工作效率,因为编译器无法在包 D 中工作。
我试过删除派生数据、清理构建文件夹、重置包缓存,none 成功了。我假设我做错了什么,但我不知道它是什么。
let package = Package(
name: "PackageD",
defaultLocalization: "en",
platforms: [
.iOS(.v13),
.macOS(.v10_15)
],
products: [
.library(
name: "PackageD",
targets: ["PackageD"]),
],
dependencies: [
.package(url: "PackageA", "0.0.1"..<"1.0.0"),
.package(url: "PackageB", "0.0.1"..<"1.0.0"),
.package(url: "PackageC", "0.0.1"..<"1.0.0"),
],
targets: [
.target(
name: "PackageD",
dependencies: [
"PackageA",
"PackageB",
"PackageC"
],
resources: [.process("Resources")]
),
]
)
看起来有一些不同的结构需要使用 UIKit。这意味着 UIKit 需要能够被导入。这在 xcode 项目中不是问题,但在基于其他包构建的包中是问题。
向所有需要它的文件添加 #if canImport(UIKit)
和 #endif
解决了问题。