swift在OS X编译为Linux?

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

Swift是否允许我在OS X上构build一个Linux项目,还是我需要在Linux上专门使用Swift来构build我计划使用的任何东西?

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

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

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

不同的是当你导入框架。

如果你导入UIKit来创建一个iOS应用程序,显然你不能在Linux上编译它,因为Linux没有这些iOS UIKit库,它们只能通过Xcode在Mac上使用。

如果你导入Cocoa来创建一个OS X应用程序,同样的逻辑适用,它只适用于OS X.

同样,如果您导入特定的Linux库(如Glibc),则无法在Mac上运行的Swift代码只能在Linux上运行。

等等

你需要记住的是编程语言在为平台创建应用程序时不是那么相关的,而你所链接的框架和库是决定性的。

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

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

这使您可以设置交叉编译器工具链(macOS到Ubuntu,甚至相反)。 SwiftPM仓库包含一个设置Intel-macOS => Intel-Ubuntu工具链的示例脚本 。

正如Eric所说,你当然只能使用目标平台上可用的框架。 但是,是的,您现在可以在macOS上构建一个Linux Swift项目。 (正如评论中的joels所提到的,你也可以很容易地通过Docker来做到这一点)

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