14

他のプラットフォームでの Swift のビルド プロセスに混乱しています。

Swift を使用すると、OS X で Linux プロジェクトをビルドできますか? または、Linux で使用する予定のものをビルドするには、特に Linux で Swift を使用する必要がありますか?

ドキュメントを見ましたが、このトピックについてはあまり明確ではありません...

4

2 に答える 2

7

フレームワークをインポートしていない純粋な Swift アプリケーションを、iOS、OS X、および Linux 用にコンパイルできるようになりました。

プラットフォームが異なるため、異なる実行可能ファイルを生成しますが、コード ソースは同じにすることができます。それぞれのプラットフォーム用にコンパイルする必要があります。

違いは、フレームワークをインポートするときです。

UIKit をインポートして iOS アプリケーションを作成する場合、明らかにこれを Linux でコンパイルすることはできません。Linux にはこれらの iOS UIKit ライブラリがなく、Xcode を介して Mac でのみ使用できるからです。

Cocoa をインポートして OS X アプリケーションを作成する場合、同じロジックが適用され、OS X でのみ機能します。

同じように、Glibc など、Mac では動作しない特定の Linux ライブラリをインポートすると、Linux でのみ動作する Swift コードを作成できます。

などなど

覚えておく必要があるのは、プラットフォーム用のアプリケーションを作成する場合、プログラミング言語はそれほど重要ではないということです。決定的なのは、リンクしているフレームワークとライブラリです。

異なる Swift バージョンには異なるコンパイラ (実際には異なるツールチェーン) が付属しているため、直接答えるには、通常の OS X Swift コンパイラを使用して Linux Swift 用にコンパイルすることはできません。Swift.org のものを使用する必要があります。

于 2016-01-27T15:40:17.317 に答える
5

Swift Package Manager は 、2017 年 4 月末のPR-1098を介してカスタム ツールチェーンのサポートを取得しました。

これにより、クロス コンパイラ ツールチェーン (macOS から Ubuntu、さらにはその逆) をセットアップできます。SwiftPM リポジトリには、Intel-macOS => Intel-Ubuntu ツールチェーンをセットアップするサンプル スクリプトが含まれています。

Eric が言うように、もちろん、ターゲット プラットフォームで利用可能なフレームワークしか使用できません。しかし、はい、macOS で Linux Swift プロジェクトをビルドできるようになりました。(コメントでjoelsが述べたように、Dockerを介してこれを非常に簡単に行うこともできます)

関連: (クロス) Raspberry PI 用の Swift のコンパイル

2021 年 10 月 19 日更新: Homebrew タップとして利用可能な既製のクロス コンパイラがあります: SPMDestinations

于 2017-05-16T14:14:23.443 に答える