加载Swift库:“错误:没有这样的模块”

时间:2018-02-13 21:33:32

标签: swift

Newbie Swift问题在这里。如果我制作了两个Swift项目 - 一个可执行文件和一个库,我在从可执行文件调用库时遇到问题。

A)因此,如果我们像这样创建项目:

~ $ mkdir Foo Bar
~ $ cd Foo/
Foo $ swift package init --type executable
Foo $ cd ../Bar/
Bar $ swift package init --type library

Bar $ git init .
Bar $ git add .
Bar $ git commit -m "Initial commit"
Bar $ git tag 1.0.0
Bar $ swift build

B)从这里,如果我尝试在“Foo”中加入“Bar”,我会error: no such module 'Bar'

这看起来像是一个Swift PATH问题。所以我肯定错过了一些非常基本的东西。有人能说出我错过的东西吗?

  

文件:Package.swift

  // swift-tools-version:4.0
  // The swift-tools-version declares the minimum version of Swift required to build this package.

  import PackageDescription

  let package = Package(
      name: "Foo",
      dependencies: [
          .package(url: "../Bar", from: "1.0.0"),
      ],
      targets: [
          .target(
              name: "Foo",
              dependencies: []),
      ]
  )
  

文件:Sources / Foo / main.swift

  import Bar
  print("Hello, world!")
  

快速构建

Bar $ cd ../Foo
Foo $ swift build

Compile Swift Module 'Foo' (1 sources)
Foo/Sources/Foo/main.swift:1:8: error: no such module 'Bar'
import Bar
       ^
error: terminated(1): /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f Foo/.build/debug.yaml main
  

$ swift --version
Apple Swift version 4.0.3 
Target: x86_64-apple-macosx

1 个答案:

答案 0 :(得分:3)

所以看起来你需要两次包含“依赖”。一旦进入“依赖关系”部分,一次进入“目标”部分。谢谢@ user9335240。

import PackageDescription

let package = Package(
    name: "Foo",
    dependencies: [
      .package(url: "../Bar", from: "1.0.0"),
    ],
    targets: [
        .target(
            name: "Foo",
            dependencies: ["Bar"]),
    ]
)