Swift包

时间:2016-12-11 01:06:19

标签: swift

在库包中,我想将一些源文件从“Sources”文件夹移动到子目录,而不改变语言语义(模块名称,可见性等)。

现在我的布局如下:

LibraryProject
  Sources
    AnotherThing.swift
    FooProtocol.swift
    SomeFoo.swift
    OtherFoo.swift
    BarProtocol.swift
    SomeBar.swift
    OtherBar.swift

而且,如果我将其更改为:

LibraryProject
  Sources
    AnotherThing.swift
    Foo
      FooProtocol.swift
      SomeFoo.swift
      OtherFoo.swift
    Bar
      BarProtocol.swift
      SomeBar.swift
      OtherBar.swift

然后,调用swift build失败:

  

错误:包具有不受支持的布局,找到了意外的源文件:[...]

这种布局是否可行?我只发现此问题https://bugs.swift.org/browse/SR-66表明它不是,但我无法在文档中找到确认(或理由)。

由于

2 个答案:

答案 0 :(得分:7)

我找到了两个适用于Linux上Swift项目的选项,所有.swift个文件都必须直接在Sources文件夹中,或者Sources中必须有一个子文件夹你喜欢的内容很多子文件夹。

Swift在Sources中的顶级子文件夹中构建一个模块,并包含其中的所有子文件夹。

我不相信在同一个Sources文件夹中有两个模块是可能的,因为模块本身无法识别任何代码。

因此,在您的示例中,工作结构将是:

LibraryProject
  Sources
    YourModuleName
      AnotherThing.swift
      Foo
        FooProtocol.swift
        SomeFoo.swift
        OtherFoo.swift
      Bar
        BarProtocol.swift
        SomeBar.swift
        OtherBar.swift

答案 1 :(得分:1)

这里是 Swift 包的文件夹结构 这里我已经提到了如何在包中添加资源和添加行 enter image description here