Xcode
iOS
XcodeGen

既存のプロジェクトを XcodeGen に移行する

More than 1 year has passed since last update.

yonaskolb/XcodeGen: Swift command line tool that generates your Xcode project from a simple spec and your folder structure

XcodeGen というのは、複数人で開発しているとよくコンフリクトする project.pbxproj を yaml から生成するように出来るツール。

XcodeGen 自体の説明とか、何が嬉しいかは、この記事を御覧ください :sunglasses:

XcodeGen を既存のプロジェクトで使いたい場合になるべく簡単に移行する助けになればと思い、この記事を書いています。
新規プロジェクトで使いたい場合も、ある程度 Xcode 上で設定してから XcodeGen 使うようにするとかって場合にも助けになればと思います。

僕自身、さっき移行が完了したところなので、内容に不足があるかもしれないけどご了承ください。

1. 既存のプロジェクトの Build Settings を xcconfig に抜き出す

既存のプロジェクトの Build Settings を xcconfig に抜き出しましょう。

xcconfig-extractor で Build Settings を xcconfig に抜き出す を見てやってみてください。

xcconfig 自体は Xcode がサポートしている仕組みなので、やっぱり XcodeGen 使うの止めた!みたいな場合に戻りやすくなったりするメリットがあると思います。

あと、xcconfig-extractor という便利ツールのお陰で XcodeGen への移行が楽になる。

2. XcodeGen をインストールする

XcodeGen のインストール方法は XcodeGen/README.md#installing を御覧ください。

3. XcodeGen の設定ファイルを作る

設定例

project.yml
name: XcodeGenExample
fileGroups:
  - configs
configFiles:
  Debug: configs/Debug.xcconfig
  Release: configs/Release.xcconfig
targets:
  XcodeGenExample:
    type: application
    platform: iOS
    sources: XcodeGenExample
    configFiles:
      Debug: configs/XcodeGenExample-Debug.xcconfig
      Release: configs/XcodeGenExample-Release.xcconfig
    settings:
      CURRENT_PROJECT_VERSION: 1
    scheme:
      testTargets:
        - XcodeGenExampleTests
    dependencies:
      - carthage: Realm
      - carthage: RealmSwift
  XcodeGenExampleTests:
    type: bundle.unit-test
    platform: iOS
    sources: XcodeGenExampleTests
    configFiles:
      Debug: configs/XcodeGenExampleTests-Debug.xcconfig
      Release: configs/XcodeGenExampleTests-Release.xcconfig
    dependencies:
      - target: XcodeGenExample

XcodeGenExample って書いてあるところとか、 dependencies を自分のアプリの設定見て適切に設定すれば大丈夫なはず。

4. ドキュメントを読む

https://github.com/yonaskolb/XcodeGen/blob/master/Docs/ProjectSpec.md

3 で例示した設定だと足りない部分も出てくると思うので、ドキュメントを読みつつ設定をアップデートする。

5. 生成する

$ xcodegen
📋  Loaded spec:
  Name: XcodeGenExample
  Targets:
    📱  application: XcodeGenExample
    📱  unitTestBundle: XcodeGenExampleTests
⚙️  Generated project
💾  Saved project to XcodeGenExample.xcodeproj

設定できてれば xcodeproj が生成される。

あとは pod install とか carthage bootstrap とかして、ビルド通るかとか確認して問題無さそうなら終わり。

6. 動かない

https://github.com/yonaskolb/XcodeGen/blob/master/Docs/ProjectSpec.md

  • ドキュメントを読んで頑張る
  • XcodeGen 使用前のプロジェクトを見て、 project.yml に書き忘れてるものが無いか確認する
  • 頑張る

以上です。

ハマったらエラーログと一緒に Qiita に記事を書くと同じハマり方した人が嬉しいです!