Swift on OS X 编译为 Linux 编译



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

Swift

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

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

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

您将生成不同的可执行文件,因为它是不同的平台,但代码源可以是相同的,只需针对相应的平台进行编译即可。

区别在于导入框架的时间。

如果你导入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 的编译器。

Swift Package Manager 通过以下方式获得自定义工具链支持PR-10982017年4月底。

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

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

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

2021-10-19 更新:有现成的交叉编译器可用作自制水龙头:SPMDestinations

最新更新