2016-08-16 3 views
2

У меня есть библиотека Swift с базовым модулем плюс дополнительные бонусные модули. Я хотел бы использовать следующую структуру каталогов, отображение на экспортируемые 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.

Существует один «Hacky», как вы можете сделать это:

Создайте свои источники в желаемом внутреннем расположении:

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"] 
) 

это можно сделать ядро, начинки и SideDishes модулей внутренних по отношению к проекту, а также экспортировать их все в мир как один большой модуль Тако?

Нет, к сожалению, в настоящее время нет возможности сделать это, и для этого требуется существенная работа с компилятором.

+0

Спасибо. Я бы сказал, что символические ссылки хуже, чем более длинные имена каталогов, но всегда полезно иметь параметры на столе! –