Carthage で外部ライブラリを導入する

Carthage とは?

日本語の読みは「カルタゴ」でいいかしら。

名前の由来は、現在のチュニジアにかつてあった古代の国家の名前らしい。
GoogleMap でみるとこんな場所。

CocoaPods のように Xcode プロジェクトに手軽に外部ライブラリを取り込めるパッケージマネージャ。

CocoaPods との違い

いろいろあるとは思うが、個人的にこれが Carthage を使う理由であり、メリットかな、と思うのは以下。

  • CocoaPods はライブラリの依存関係の解決にワークスペースファイル(xcworkspace) を使用する
    • プロジェクトファイル(xcodeproj) しか使用しない場合でも、CocoaPods により、 xcworkspace が作られるので、その分煩雑になる。
    • Carthage は xcworkspace を使わずに依存関係を解決するので、上記の問題が起きない
    • こちらの方が直感的。
  • またライブラリ開発者側から見たメリットとしては
    • CocoaPods では CocoaPods へライブラリを登録、更新する作業が必要になるが
    • Carthage は GitHub 上にあるライブラリを直接ユーザが利用できるため
    • ライブラリ開発者が、GitHub で開発しているのならば、ライブラリ登録・更新の作業が CocoaPods に比べて、簡易化されることになる

Carthage を macOS にインストールする

すでに Homebrew がインストールされているならば、 brew でインストールするのが楽。

$ brew install carthage

Cartfile を作る

例として AEXML という XML パースのライブラリを iOS プロジェクトで使う方法をのべる。

Cartfile という名前のファイルをプロジェクトのルートに作り、依存するライブラリをを下のように記述する。

github "tadija/AEXML"

もしくは下でも良い。

git "https://github.com/tadija/AEXML.git"

Carthage で依存ライブラリをビルドする

Cartfile があるディレクトリで carthage コマンドを実行する。

carthage update 

もし、ライブラリの取り込みが成功していたら Carthage/Build フォルダ以下に framework ができている。

Xcode で依存ライブラリをリンクする

  1. Xcode でプロジェクトを開く。
  2. BuildPhase -> Link Binary With Libraries を開き、先ほど作った framework を追加する。
  3. BuildPhase から 新しい Run Script Phase を追加して、以下のスクリプトを追加する。
    • /usr/local/bin/carthage copy-frameworks
    • Input Files に framework のパスを以下のように追加する
      • $(SRCROOT)/Carthage/Build/iOS/AEXML.framework

そのた

Carthage のキャッシュを削除したい場合

rm -rf ~/Library/Caches/org.carthage.CarthageKit

おわり