无法使用自定义路径解析 Swift 程序包管理器中的清单文件
Failure to Parse Manifest File in Swift Package Manager With Custom Path
我正在制作一个可用于多个 swift 应用程序的库。我希望我的库可以通过 Swift 包管理器轻松安装。我创建了一个空白的 Swift 应用程序并尝试使用 Swift 包管理器从 Github 存储库自动安装此库。
当我第一次尝试使用包管理器下载 repo 时,我收到一条错误消息,提示我需要使用路径 属性 指定我的源文件夹的路径,所以我添加了行
path: "Sources"
指定目录。
这是我项目根目录下的package.Swift文件
// swift-tools-version:5.1
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "TestProject",
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "TestProject",
targets: ["TestProject"]),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
path: "Sources",
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 which this package depends on.
.target(
name: "TestProject",
dependencies: []),
.testTarget(
name: "TestProjectTests",
dependencies: ["TestProject"]),
]
)
自从将 path: "Sources"
添加到我的代码后,我现在收到了两个新错误
Type 'Any' has no member 'library'
和
Failed to parse the manifest file
我不确定是什么导致了这些错误,因为此代码(减去我添加的行)是由 Swift 生成的。
您指定的 path
目标不是整个包。
所以去你的:
.target(
name: "TestProject",
dependencies: []),
并将其更改为:
.target(
name: "TestProject",
dependencies: [],
path: "Sources"),
您可能需要为您的 testTarget
执行相同的操作以指向其测试源(默认情况下它会查看相对于包根目录的 Tests/
。
我正在制作一个可用于多个 swift 应用程序的库。我希望我的库可以通过 Swift 包管理器轻松安装。我创建了一个空白的 Swift 应用程序并尝试使用 Swift 包管理器从 Github 存储库自动安装此库。
当我第一次尝试使用包管理器下载 repo 时,我收到一条错误消息,提示我需要使用路径 属性 指定我的源文件夹的路径,所以我添加了行
path: "Sources"
指定目录。
这是我项目根目录下的package.Swift文件
// swift-tools-version:5.1
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "TestProject",
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "TestProject",
targets: ["TestProject"]),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
path: "Sources",
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 which this package depends on.
.target(
name: "TestProject",
dependencies: []),
.testTarget(
name: "TestProjectTests",
dependencies: ["TestProject"]),
]
)
自从将 path: "Sources"
添加到我的代码后,我现在收到了两个新错误
Type 'Any' has no member 'library'
和
Failed to parse the manifest file
我不确定是什么导致了这些错误,因为此代码(减去我添加的行)是由 Swift 生成的。
您指定的 path
目标不是整个包。
所以去你的:
.target(
name: "TestProject",
dependencies: []),
并将其更改为:
.target(
name: "TestProject",
dependencies: [],
path: "Sources"),
您可能需要为您的 testTarget
执行相同的操作以指向其测试源(默认情况下它会查看相对于包根目录的 Tests/
。