使用 Swift 包管理器导入模块
Importing modules with Swift package manager
我正在尝试使用 Swift 的包管理器在我的项目中导入外部模块。我的第一个模块来自Vapor project。我似乎无法让它工作。我从
开始
swift package init
swift package generate-xcodeproj
我的 Package.swift 看起来像这样:
import PackageDescription
let package = Package(
name: "OpenTools",
products: [
.library(
name: "OpenTools",
targets: ["OpenTools"]),
],
dependencies: [
.package(url: "https://github.com/vapor/json.git", from: "2.0.0")
],
targets: [
.target(name: "OpenTools", dependencies: ["JSON"]),
]
)
然后我运行
swift package update
swift package generate-xcodeproj # to regenerate with dependencies
然后尝试在我的主文件中导入 JSON 包
import JSON
模块如下所示,但导入返回时出现 No such module 'JSON'
错误。
有什么想法吗?
可能问题出在 Xcode 中,因为它还不知道 JSON
存在,因为它尚未构建。这可以通过构建您的项目(使用 cmd-B
)轻松解决。使用生成的 xcodeproj,Xcode 应该知道它首先需要构建 JSON
,然后是其余部分,因为 JSON
被标记为目标的依赖项。
您可以通过在 Xcode 中导航到您的目标(当您单击项目描述文件时)然后导航到“构建阶段”来检查这一点。在目标依赖项下,您应该找到 JSON
模块。
此外,您应该在目标下找到一个 JSON
模块,它编译您从 github 收集的源代码。
在您的项目根目录中执行 swift build
时,您的项目也应该构建。
使用 Xcode 11,您应该能够直接打开 Package.swift
,这将为您提供验证包清单(又名:Package.swift
文件)和编译目标。这应该有助于了解导致模块无法编译的错误的真正原因。
我正在尝试使用 Swift 的包管理器在我的项目中导入外部模块。我的第一个模块来自Vapor project。我似乎无法让它工作。我从
开始swift package init
swift package generate-xcodeproj
我的 Package.swift 看起来像这样:
import PackageDescription
let package = Package(
name: "OpenTools",
products: [
.library(
name: "OpenTools",
targets: ["OpenTools"]),
],
dependencies: [
.package(url: "https://github.com/vapor/json.git", from: "2.0.0")
],
targets: [
.target(name: "OpenTools", dependencies: ["JSON"]),
]
)
然后我运行
swift package update
swift package generate-xcodeproj # to regenerate with dependencies
然后尝试在我的主文件中导入 JSON 包
import JSON
模块如下所示,但导入返回时出现 No such module 'JSON'
错误。
有什么想法吗?
可能问题出在 Xcode 中,因为它还不知道 JSON
存在,因为它尚未构建。这可以通过构建您的项目(使用 cmd-B
)轻松解决。使用生成的 xcodeproj,Xcode 应该知道它首先需要构建 JSON
,然后是其余部分,因为 JSON
被标记为目标的依赖项。
您可以通过在 Xcode 中导航到您的目标(当您单击项目描述文件时)然后导航到“构建阶段”来检查这一点。在目标依赖项下,您应该找到 JSON
模块。
此外,您应该在目标下找到一个 JSON
模块,它编译您从 github 收集的源代码。
在您的项目根目录中执行 swift build
时,您的项目也应该构建。
使用 Xcode 11,您应该能够直接打开 Package.swift
,这将为您提供验证包清单(又名:Package.swift
文件)和编译目标。这应该有助于了解导致模块无法编译的错误的真正原因。