Swift 包管理器在源中找不到相邻的 folder/class

Swift Package Manager cannot find a neighboring folder/class in Sources

目标: 访问源文件夹中的相邻 folder/classes。

场景: 我有两个 classes:

  1. RicPackage(默认)和
  2. 苹果

'RicPackage' 是在创建 Swift 程序包 'RicPackage' 时 自动生成的
我想扩展并尝试自主访问其他文件夹w/classes。

这是我正在处理的清单:

// swift-tools-version:5.5
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "RicPackage",
    products: [
        // Products define the executables and libraries a package produces, and make them visible to other packages.
        .library(
            name: "RicPackage",
            targets: ["RicPackage"]),
        .library(
            name: "Apple",
            targets: ["Apple"]),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
        .target(
            name: "RicPackage",
            dependencies: []),
        .target(
            name: "Apple",
            dependencies: []),
        .testTarget(
            name: "RicPackageTests",
            dependencies: ["RicPackage"]),
    ]
)

我希望能够独立于主机程序访问 'Apple' 和其他此类文件夹。

这是 Apple 源代码:

import Foundation

class Apple {
    public private(set) var text = "Hello from Apple!"

    public init() {
    }
    
    public func eat() -> String {
        print("Inside Eat Apple")
        return "Hello from Eat Apple."
    }
}

这是测试。 一旦我让它工作,我将尝试从主机应用程序访问它。

我相信 classes 和函数必须 'pubic' 才能看到。

问题:

  1. 我对软件包清单文件做错了什么?
  2. 目标 class 文件必须与其文件夹容器同名吗? ... 例如:'Apple/Apple.swift'.

所以在RicPackageTest中,你找不到Apple。是否缺少 import?不一定,你也找不到。

这是因为 RicPackageTest 的构造方式不知道 Apple 包。

您写道:

.testTarget(
    name: "RicPackageTests",
    dependencies: ["RicPackage"]),

这就是缺少的内容,您并不是说 RicPackageTests 应该“依赖”(即“知道”)Apple 包。

所以你应该这样做:

.testTarget(
    name: "RicPackageTests",
    dependencies: ["RicPackage", "Apple"]),

感谢 Larme 正确回答了我的新手问题。

解决方法如下:

  1. 需要依赖:

  1. 测试中需要参考: