使用 Swift 包管理器导入模块

Mik*_*e M 0 swift swift-package-manager

我正在尝试使用 Swift 的包管理器在我的项目中导入外部模块。我的第一个模块来自Vapor 项目。我似乎无法让它工作。我开始

swift package init
swift package generate-xcodeproj
Run Code Online (Sandbox Code Playgroud)

我的 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"]),
    ]
)
Run Code Online (Sandbox Code Playgroud)

然后我跑

swift package update
swift package generate-xcodeproj # to regenerate with dependencies
Run Code Online (Sandbox Code Playgroud)

然后尝试在我的主文件中导入 JSON 包

import JSON
Run Code Online (Sandbox Code Playgroud)

模块如下所示,但导入返回No such module 'JSON'错误。

在此处输入图片说明

有什么想法吗?

tie*_*tor 5

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

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

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