如何在从命令行编译的 Swift 应用程序中使用文件夹?

How can I use folders in a Swift application compiled from the command line?

我正在使用 Swift3 和 Swift 包管理器构建一个简单的网络服务器。项目文件夹中的 运行 swift build 将构建在 Sources 目录中找到的所有源代码并输出可执行文件。但是,我发现如果我在 Sources 目录中创建文件夹来组织我的代码,我的构建就会失败。在我看来,文件夹的存在导致 swift 将源视为不同的模块。这是原因吗?如果是,我该如何解决?

是的。将目录直接放在 Sources 下将导致 SwiftPM 将它们解释为模块。 package manager reference.

中对此进行了描述

要解决这个问题,请使用另一个间接级别:将模块目录放在 Sources 中,并将其他目录放在该目录中:

Sources/YourApp/Stuff/Source1.swift
Sources/YourApp/Stuff/Source2.swift
Sources/YourApp/MoreStuff/Source3.swift
Sources/YourApp/MoreStuff/Source4.swift