Carthageを試す

Carthageの準備

Carthageをインストール

Homebrewでインストールする

$ brew update
$ brew install carthage
($ brew upgrade carthage)

Carthageでライブラリを利用する

Cartfileの準備

$ touch Cartfile
$ edit Cartfile
github "ReactiveCocoa/ReactiveCocoa"

// または
git "git@github.com:Carthage/Carthage.git"

ライブラリのビルド&インストール

$ carthage update

Carthage/Checkouts直下にライブラリがチェックアウト(clone)される
Carthage/Buildにライブラリがdynamic frameworkとしてビルドされる

Xcodeプロジェクトに組み込む

  • TARGETS > General > Linked Frameworks and Librariesから
    Carthage/Buildにビルドされたframeworkを追加

  • TARGETS > Build Phasesに”Run Script Phase”を追加

    • コマンド入力欄に以下を設定

       /usr/local/bin/carthage copy-frameworks
      
    • “Input Files”に以下を設定

       $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
      

エラー対応

エラーが発生したらXcodeのbetaを利用するように変更することで解消する場合がある。

$ sudo xcode-select --switch /Applications/Xcode-beta.app
$ xcode-select --print-path
/Applications/Xcode-beta.app/Contents/Developer

その他

  • ビルド時に生成されるCartfile.resolvedをバージョン管理ツールで管理する
    ex.) git commit Cartfile.resolved

  • ライブラリを組み込む人以外は以下のコマンドを実行してビルド&インストールする
    ライブラリの依存関係を再チェックしない(その時最新のものを勝手にインストールしないようにするため)?

      $ carthage bootstrap
    
  • ビルド時にリリースビルドとデバッグビルドを切り替える
    デフォルトはリリースビルドかな?

      $ carthage update --configuration Debug
    

ライブラリをCarthageに対応する

プロジェクトの作成

dynamic frameworkのためのTARGETを追加

create-dynamic-framework-target

schemesharedに設定

shared-scheme

Product NameTARGET_NAMEからPROJECT_NAMEに変更
TARGETをHoge-iOSなどで作成したものの、ライブラリをプロジェクト名でビルドしたい場合がある

change-product-name

コンパイルソースファイルや公開するヘッダーファイルを設定

headers-and-sources

ビルドできるか試す

$ carthage build --no-skip-current
*** xcodebuild output can be found in /var/folders/gh/k78xg2h16t1g9hf6j5b6x71h0000gn/T/carthage-xcodebuild.nXl0s5.log
*** Building scheme "SampleLibrary" in SampleLibrary.xcodeproj

Carthage/Build配下に*.frameworkが作成される

TAGを切る

$ git tag 1.0.0