Skip to content

Instantly share code, notes, and snippets.

@niwatako
Created June 20, 2018 12:09
Show Gist options
  • Save niwatako/1e50199af5f9687f7901a62ea1ed0d89 to your computer and use it in GitHub Desktop.
Save niwatako/1e50199af5f9687f7901a62ea1ed0d89 to your computer and use it in GitHub Desktop.
『What’s new in Xcode10 Build System』 #CodePiece #ca_swift
CA.swift #6 WWDC18 報告会 - connpass
https://cyberagent.connpass.com/event/88328/
## 『What’s new in Xcode10 Build System』
石川 諒 @rinov0321
今回はXcode改善が大きかったと思う。大きなものは3つ
- Parallelizing your build process
- Measuring your build time
- New compilation mode
### Parallelizing your build process
従来、ターゲットの依存関係の順序をXcodeが解析して、順番にビルドが行われていた。
Xcode10から、ターゲット間で依存がある部分のビルドが終わったら、次のターゲットのビルドが始まる。
8割ダウンロードしたら次をダウンロード始めるみたいな。
Build Optionの
- Parallelized Build
- Find Implicit Dependencies
にチェックを入れると使えます。
### Measuring your build time
Build with timing Summaryというビルドができる。あるいは `xcodebuild -showBuildTimingSummary`
RunScriptフェーズにどれくらい懸かったかもわかるぞ
### New compilation mode
差分ビルドのようにして居た方も多いと思いますが
Whole Moduleは全体最適でGenericsがIntとStringがなければ特殊化された具体型を生成してしまうものだが、非推奨になって、DebugではIncrementalモードを選ぶようにということになった。
差分ビルドの注意点
ファイルベースでのインクリメンタルビルドになる。PointというStructがあって、イニシャライザを追加すると、
イニシャライザを追加したので2つのファイルでビルドが走る。
initのファンクションボディを変更したら、1つのファイルのビルドにとどまる。
struct Point を定義しているファイルに struct PathSegment を足すと、 Pointを使っている他のファイルにもビルドが必要になる。
### まとめ
- ビルドプロセスの並列化
- 時間計測が公式サポート
- インクリメンタルモードが追加された
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment