在库包中,我想将一些源文件从“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表明它不是,但我无法在文档中找到确认(或理由)。
由于
答案 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)