代码之家  ›  专栏  ›  技术社区  ›  Mike M

使用Swift package manager导入模块

  •  0
  • Mike M  · 技术社区  · 7 年前

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

    swift package init
    swift package generate-xcodeproj
    

    我的包裹。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' 错误

    enter image description here

    有什么想法吗?

    2 回复  |  直到 7 年前
        1
  •  5
  •   tierriminator    3 年前

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

    此外,你应该找到一个 JSON

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

        2
  •  1
  •   Joe Susnick    5 年前

    使用Xcode 11,您应该能够打开 Package.swift 这将为您提供验证包清单的试验场(也称为: 包裹敏捷的 文件)和编译目标。这应该有助于了解是什么导致了阻止编译模块的错误。