Swift 包编译器问题

问题描述

我有一个项目有 4 个 Swift 包依赖项。包 A、B、C、D。每个包都使用以前的包作为依赖项。

我面临的问题是,由于包 B 中的错误实际上并不存在,因此包 D 在编译时出现问题。 (Cannot find type 'CustomType' in scope) 作为包 B 和 xcode 项目,我正在使用这两个包工作正常。

这阻碍了我的高效工作,因为编译器无法在包 D 中工作。

我尝试删除派生数据、清理构建文件夹、重置包缓存,但这些都没有奏效。我假设我做错了什么,但我不知道它是什么。

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",.package(url: "PackageC",targets: [
        .target(
            name: "PackageD",dependencies: [
                "PackageA","PackageB","PackageC"
            ],resources: [.process("Resources")]
        ),]
)

解决方法

看起来有几个不同的结构需要使用 UIKit。这意味着 UIKit 需要能够被导入。这不是 xcode 项目中的问题,而是基于其他包构建​​的包中的问题。

#if canImport(UIKit)#endif 添加到需要它的所有文件中解决了问题。