2016-08-16 10 views
2

私はコアモジュールとオプションのボーナスモジュールを備えたSwiftライブラリを持っています。私が示すように、以下のディレクトリレイアウトを使用して、エクスポートスウィフトパッケージ名にマッピングしたいと思います:モジュール名をSwiftPMのディレクトリ名と異なるように設定する

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

私の目に、それは賢明に見えるプロジェクトのレイアウトです。しかし、私がドキュメントを正しく読んでいるなら、これはグローバルモジュールの名前空間を "Core"のような役に立たない名前で汚染します。上記の、まだ輸出整然とディレクトリレイアウトを使用するようにPackage.swiftを設定する方法はあり

Taco/ 
    Source/ 
    Taco/ 
    TacoToppings/ 
    TacoSideDishes/ 

:SwiftPMだけ名前がディレクトリ名と同一であるモジュールをエクスポートしますので、私はこれをしなければならないようです希望のモジュール名は?

また、Core、Toppings、およびSideDishesモジュールをプロジェクトの内部に作成し、それらをすべて1つの大きなTacoモジュールとして世界中にエクスポートすることは可能ですか?

答えて

4

これを行うには現在のところ清潔な方法はありませんが、妥当な要求のようです。そのために、改善要求をhttp://bugs.swift.orgに提出することをお勧めします。

あなたがこれを行うことができます1「ハック」の方法があります:

は、所望の内部レイアウトで、あなたのソースを作成します。

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モジュールをプロジェクトの内部に作成し、それらをすべて1つの大きなTacoモジュールとして世界中にエクスポートすることは可能ですか?

残念ながら、現時点ではこれを行う方法はなく、サポートするためには相当なコンパイラー作業が必要です。

+0

ありがとうございました。私はシンボリックリンクが長いディレクトリ名よりも悪いと言っていますが、テーブルにオプションをつけるのは常に良いことです! –

関連する問題