Swift 包管理器在源中找不到相邻的 folder/class
Swift Package Manager cannot find a neighboring folder/class in Sources
目标: 访问源文件夹中的相邻 folder/classes。
场景: 我有两个 classes:
- RicPackage(默认)和
- 苹果
'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' 才能看到。
问题:
- 我对软件包清单文件做错了什么?
- 目标 class 文件必须与其文件夹容器同名吗?
... 例如:'Apple/Apple.swift'.
所以在RicPackageTest
中,你找不到Apple
。是否缺少 import
?不一定,你也找不到。
这是因为 RicPackageTest
的构造方式不知道 Apple
包。
您写道:
.testTarget(
name: "RicPackageTests",
dependencies: ["RicPackage"]),
这就是缺少的内容,您并不是说 RicPackageTests
应该“依赖”(即“知道”)Apple
包。
所以你应该这样做:
.testTarget(
name: "RicPackageTests",
dependencies: ["RicPackage", "Apple"]),
感谢 Larme 正确回答了我的新手问题。
解决方法如下:
- 需要依赖:
- 测试中需要参考:
目标: 访问源文件夹中的相邻 folder/classes。
场景: 我有两个 classes:
- RicPackage(默认)和
- 苹果
'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' 才能看到。
问题:
- 我对软件包清单文件做错了什么?
- 目标 class 文件必须与其文件夹容器同名吗? ... 例如:'Apple/Apple.swift'.
所以在RicPackageTest
中,你找不到Apple
。是否缺少 import
?不一定,你也找不到。
这是因为 RicPackageTest
的构造方式不知道 Apple
包。
您写道:
.testTarget(
name: "RicPackageTests",
dependencies: ["RicPackage"]),
这就是缺少的内容,您并不是说 RicPackageTests
应该“依赖”(即“知道”)Apple
包。
所以你应该这样做:
.testTarget(
name: "RicPackageTests",
dependencies: ["RicPackage", "Apple"]),
感谢 Larme 正确回答了我的新手问题。
解决方法如下:
- 需要依赖:
- 测试中需要参考: