2016-08-16 88 views
2

我有一个带有核心模块和可选奖励模块的Swift库。我想用下面的目录布局,映射出口斯威夫特包名,如下所示:将模块名称设置为与SwiftPM中的目录名称不同

Taco/ 
    Source/ 
    Core/  → import Taco 
    Toppings/ → import TacoToppings 
    SideDishes/ → import TacoSideDishes 

我的眼睛,这是一个明智的前瞻性项目布局。但是,如果我正在阅读文档,这将会污染全局模块名称空间,并使用无用的名称(如“Core”)。看来SwiftPM将只导出一个模块的名字是相同的目录名,因此,我必须这样做:

Taco/ 
    Source/ 
    Taco/ 
    TacoToppings/ 
    TacoSideDishes/ 

是否有配置Package.swift使用上述及出口整洁的目录布局方式所需的模块名称?

或者,是否可以将Core,Toppings和SideDishes模块作为项目的内部组件,并将它们作为一个大的Taco模块导出到全世界?

回答

4

目前还没有一个干净的方式来做到这一点,但它似乎是一个合理的要求。我建议为http://bugs.swift.org提交一个改进请求。

有一个“哈克”的方式,你可以这样做:

中所需的内部布局创建来源:

Sources/Core 
Sources/Toppings 

添加额外的符号链接,所需模块名称:

ln -s Core Sources/Taco 
ln -s Toppings Sources/TacoToppings 

向清单添加exclude指令,以忽略不需要的模块名称:

let package = Package(
    name: "Taco", 
    exclude: ["Sources/Core", "Sources/Toppings"] 
) 

是否有可能使Core,Toppings和SideDishes模块成为项目的内部组件,并将它们作为一个大的Taco模块导出到全世界?

不,目前没有办法做到这一点,它需要大量的编译工作才能够支持。

+0

谢谢。我会说符号链接比较长的目录名称更差 - 但在桌面上有选项总是很好的! –

相关问题