Carthage で外部ライブラリを導入する
Carthage とは?
日本語の読みは「カルタゴ」でいいかしら。
名前の由来は、現在のチュニジアにかつてあった古代の国家の名前らしい。
GoogleMap でみるとこんな場所。
CocoaPods のように Xcode プロジェクトに手軽に外部ライブラリを取り込めるパッケージマネージャ。
CocoaPods との違い
いろいろあるとは思うが、個人的にこれが Carthage を使う理由であり、メリットかな、と思うのは以下。
- CocoaPods はライブラリの依存関係の解決にワークスペースファイル(
xcworkspace
) を使用する- プロジェクトファイル(
xcodeproj
) しか使用しない場合でも、CocoaPods により、xcworkspace
が作られるので、その分煩雑になる。 - Carthage は
xcworkspace
を使わずに依存関係を解決するので、上記の問題が起きない - こちらの方が直感的。
- プロジェクトファイル(
- またライブラリ開発者側から見たメリットとしては
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 で依存ライブラリをリンクする
- Xcode でプロジェクトを開く。
- BuildPhase -> Link Binary With Libraries を開き、先ほど作った framework を追加する。
- 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
おわり