2016-08-16 82 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

謝謝。我會說符號鏈接比較長的目錄名稱更差 - 但在桌面上有選項總是很好的! –

相關問題