现在可以为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的编译器.
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
| 归档时间: |
|
| 查看次数: |
2636 次 |
| 最近记录: |