tl;dr
Carthageを使って高速なビルド環境を手に入れたいけど、ライブラリ側のコードをデバッグしたいこともある、そんなあなたのための豆知識です。
https://github.com/toshi0383/CarthageWorkspaceSample
普通にCarthageでライブラリをインストールする
まずは普通に carthage update
して、 carthage copy-frameworks
をBuild Phaseに設定します。詳細は、Carthageのドキュメントに譲ります。
Carthage/Checkouts/
以下に展開されたxcodeprojをプロジェクトに追加する
こうすると、追加したxcodeprojをアプリと一緒にビルドしてくれるようになり、ライブラリ側のコードにデバッガを当てることができるようになります。追加する先はxcworkspace, xcodeproj, どちらでも構いません。
xcodeprojに追加する場合は、こんな感じになると思います。
ライブラリのデバッグをする必要がない時
上の手順を踏んだ状態だと、毎回ライブラリのxcodeprojをビルドしてしまいビルドに時間がかかります。気になる場合は Carthage/Checkouts/
を削除して対応しましょう。参照が切れて赤くなりますが、Linkしているframeworkは Carthage/Build/
にあるため、ビルドはちゃんと通ります。
普段はこの状態にしておいて、必要な時に carthage checkout MyLibrary
として Carthage/Checkouts/
に展開する形が良いかと思います。
ライブラリの数が増えてくると赤いのが目障りかもしれないので、Groupでまとめてしまってもいいかもしれません。
そもそもなぜこういう解説が必要なのか?
ビルドした人のPC上でしかデバッグシンボルが紐づかないというXcodeの問題があるためです。Carthageのissueでも議論されていました。
この問題はAppleによってずっと放置されています。
Dupe rdar://23551273 if you want Apple to fix the root cause of this problem.
とCarthageのREADMEにもある通り、ぜひみんなで同じ内容のバグレポートを登録してAppleに改善を促しましょう!