使用Swift软件包管理器导入模块

使用Swift软件包管理器导入模块,swift,swift-package-manager,Swift,Swift Package Manager,我正在尝试使用Swift的包管理器在我的项目中导入外部模块。我的第一个模块来自。我似乎无法让它工作。我从 swift package init swift package generate-xcodeproj 我的Package.swift如下所示: import PackageDescription let package = Package( name: "OpenTools", products: [ .library( name

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

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
模块如下所示,但导入返回时出现
无此类模块“JSON”错误


有什么想法吗?

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

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


在项目根目录中执行
swift build
时,您的项目也应该进行生成。

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

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


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

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

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

这是正确的。这只是一个Xcode的怪癖<代码>⌘+B
构建或
⌘+U
进行测试,您就可以开始了。如果错误一直“挂起”,重新启动Xcode,您就可以继续了。是的,我同意这个答案几乎肯定是正确的。所以,不是评论我已经尝试过了,但它仍然不适合我,它甚至在构建阶段的目标依赖项和链接二进制文件部分中有一些内容。我该怎么办?这是正确的。这只是一个Xcode的怪癖<代码>⌘+B构建或
⌘+U
进行测试,您就可以开始了。如果错误一直“挂起”,重新启动Xcode,您就可以继续了。是的,我同意这个答案几乎肯定是正确的。所以,不是评论我已经尝试过了,但它仍然不适合我,它甚至在构建阶段的目标依赖项和链接二进制文件部分中有一些内容。我该怎么办?