【问题标题】:Importing modules with Swift package manager使用 Swift 包管理器导入模块
【发布时间】:2017-11-13 15:37:30
【问题描述】:

我正在尝试使用 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' 错误。

有什么想法吗?

【问题讨论】:

    标签: swift swift-package-manager


    【解决方案1】:

    可能问题出在 Xcode 中,因为它还不知道 JSON 存在,因为它还没有构建。这可以通过构建您的项目(使用cmd-B)轻松解决。使用生成的 xcodeproj,Xcode 应该知道它首先需要构建 JSON,然后再构建其余部分,因为 JSON 被标记为目标的依赖项。
    您可以通过在 Xcode 中导航到您的目标(当您单击项目描述文件时)然后到“构建阶段”来检查这一点。在 Target Dependencies 下,您应该找到您的 JSON 模块。

    此外,您应该在您的目标下找到一个 JSON 模块,它编译您从 github 收集的源代码。

    在您的项目根目录中执行 swift build 时,您的项目也应该构建。

    【讨论】:

    • 这是正确的。这只是 Xcode 的一个怪癖。 ⌘+B 进行构建或 ⌘+U 进行测试,一切顺利。如果错误一直“挂起”并且你很高兴,请重新启动 Xcode。
    • 是的,我同意这个答案几乎可以肯定是正确的。所以,不是评论
    • 我已经尝试过了,但它仍然对我不起作用,它甚至在目标依赖项中有一些东西,并与构建阶段的链接二进制文件部分链接。我该怎么办?
    【解决方案2】:

    使用 Xcode 11,您应该能够直接打开 Package.swift,这将为您提供验证包清单(又名:Package.swift 文件)和编译目标的试验场。这应该有助于了解导致模块无法编译的错误的实际原因。

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      相关资源
      最近更新 更多