Swift for OS X编译Linux?

Mil*_*ams 11 linux macos report tps swift

我对其他平台上Swift的构建过程感到困惑.

Swift是否允许我在OS X上构建Linux项目,或者我是否需要在Linux上专门使用Swift来构建我计划在那里使用的任何东西?

我查看了文档,但这个主题并不是很清楚......

aya*_*aio 7

现在可以为iOS,OS X和Linux编译不导入任何框架的纯Swift应用程序.

您将生成不同的可执行文件,因为它是不同的平台,但代码源可以是相同的,它只需要为各自的平台编译.

不同之处在于导入框架时.

如果您导入UIKit来制作iOS应用程序,显然您将无法在Linux上编译它,因为Linux没有那些iOS UIKit库,它们只能通过Xcode在Mac上使用.

如果导入Cocoa以生成OS X应用程序,则应用相同的逻辑,它仅适用于OS X.

同样,如果您导入特定的Linux库(如Glibc),那么您可以制作仅适用于Linux的Swift代码,这些代码将无法在Mac上运行.

等等

您需要记住的是,编程语言在为平台创建应用程序时并不相关,而是您链接到的框架和库是决定性的.

不同的Swift版本带有不同的编译器(实际上是不同的工具链),所以要直接回答,不能用普通的OS X Swift编译器编译Linux Swift,你必须使用Swift.org的编译器.


hnh*_*hnh 6

Swift 包管理器 于 2017 年 4 月末通过PR-1098获得了自定义工具链支持。

这允许您设置交叉编译器工具链(macOS 到 Ubuntu,甚至相反)。SwiftPM 存储库包含一个示例脚本,用于设置 Intel-macOS => Intel-Ubuntu 工具链。

正如 Eric 所说,您当然只能使用目标平台上可用的框架。但是,是的,您现在可以在 macOS 上构建 Linux Swift 项目。(正如 joels 在评论中提到的,您也可以通过 Docker 轻松完成此操作)

相关:(交叉)编译 Raspberry PI 的 Swift

2021 年 10 月 19 日更新:有现成的交叉编译器可用作 Homebrew Tap:SPMDestinations