BETA

Swiftコンパイラビルド備忘録

投稿日:2019-03-23
最終更新:2019-03-23

Swiftコンパイラビルド備忘録

すべて https://medium.com/@kitasuke/%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E3%81%A7swift%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-c56e79f5aa67
の受け売りです。

基本

https://qiita.com/rintaro/items/2047a9b88d9249459d9a これにぜんぶのってる

1. リポジトリをクローン

$ mkdir swift-source  
$ cd swift-source  
$ git clone https://github.com/apple/swift.git  

そしたら...

// --clone はおもちさんいわく、初回のみでいい  
$ ./swift/utils/update-checkout --clone  

2. CMake と Ninja

// Ninja へ実は上でDL済とのこと  
brew install cmake  

特定のSwiftバージョンを選択してビルド

(master なら、Swift4.2を解釈するコンパイラ、ってこと(つーかコンパイラがSwift 4.2 そのもの))

3. 各リポジトリのブランチ更新

scheme -ブランチ名: ブランチを切り替えつつ、最新の内容に更新

4. ビルド

$ cd swift  
$ utils/build-script -Rt   

30分~数時間かかる。

-R が Release ビルド、これをつけないとデバッグ版のビルドになってしまい、コンパイルが非常に遅くなるので必ずつけます。 -t はテストも> 実行という意味で、省略して -Rt です。

ビルドはソースツリーの外で行われるようなっていて、成果物はすべて swift-source ディレクトリ内の build/Ninja-ReleaseAssert にあります

ビルドされたコンパイラが本当に動いてるかみてみよう

$ ./build/Ninja-ReleaseAssert/swift-macosx-x86_64/bin/swift -version  
Swift version 4.0-dev (LLVM 2b37177ffc, Clang cc5d6deb6e, Swift 2fe2328436)  
Target: x86_64-apple-macosx10.9  

$ echo 'print("Hello Swift!")' | ../build/Ninja-ReleaseAssert/swift-macosx-x86_64/bin/swift  
Hello Swift!  

5. 最新版に追従

a. ソースアップデート

// 1にもでてきたやつを、オプション無しで使用  
$ cd /swift  
$ update-checkout  

b. ビルド更新

// 2回目以降は差分ビルドになるので速い  
$ utils/build-script -Rt  

その他: Swiftバージョン指定してビルド

1. 各リポジトリのブランチ更新

$ ./utils/update-checkout --scheme swift-5.0-branch  

masterがほしいなら...

$ ./utils/update-checkout --scheme master  

2. ToolChainを更新

2通りの方法がある

a. ToolChainを自分で用意

ここでDL
https://swift.org/download/#snapshots

適用
Preferences -> ComponentsのToolchains

https://medium.com/@rizwanahmed_41502/installing-swift-5-toolchain-in-xcode-24fcc62b33ba

b. Xcodeを使う
a. のかわりに使いたいToolchainが入ったXcodeが存在すれば、それ使えば解決

コマンド

平日、普段どおりの開発環境に戻すためにも、ふつうに超重要

  • 使用するXcode(これすなわち"Command Line Tool" ってことかな?)
sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer  
  • Swiftのバージョンを見る

CLTのバージョンを確認した上で、

$ swift -v  
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

備忘録ほどの価値もない走り書き

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!