将模块名称设置为与SwiftPM中的目录名称不同

将模块名称设置为与SwiftPM中的目录名称不同,swift,swift3,swift-package-manager,Swift,Swift3,Swift Package Manager,我有一个Swift库,包含一个核心模块和可选的奖金模块。我想使用以下目录布局,映射到导出的Swift包名称,如图所示: Taco/ Source/ Core/ → import Taco Toppings/ → import TacoToppings SideDishes/ → import TacoSideDishes 在我看来,这是一个合理的项目布局。但是,如果我读对了文档,这将用“Core”等无用的名称污染全局模块名称空间。SwiftPM

我有一个Swift库,包含一个核心模块和可选的奖金模块。我想使用以下目录布局,映射到导出的Swift包名称,如图所示:

Taco/
  Source/
    Core/        → import Taco
    Toppings/    → import TacoToppings
    SideDishes/  → import TacoSideDishes
在我看来,这是一个合理的项目布局。但是,如果我读对了文档,这将用“Core”等无用的名称污染全局模块名称空间。SwiftPM似乎只会导出名称与目录名相同的模块,因此我必须这样做:

Taco/
  Source/
    Taco/
    TacoToppings/
    TacoSideDishes/
有没有办法配置
Package.swift
以使用上面整洁的目录布局,并且仍然导出所需的模块名称


或者,是否有可能将核心、配料和配菜模块制作成项目的内部模块,并将它们全部作为一个大的玉米卷模块输出到世界上?

目前没有一个干净的方法来实现这一点,但这似乎是一个合理的要求。我建议您在提交一个增强请求

有一种“黑客”方式可以做到这一点:

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

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"]
)
是否有可能将核心、配料和配菜模块制作成项目的内部模块,并将它们作为一个大的玉米卷模块输出到世界各地


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

谢谢。我想说符号链接比较长的目录名更糟糕——但在表上有选项总是好的!