Carthageを使おう

環境

めも

  • Carthage関連の記事はSwiftと結びついていることが多いですが、Objective-Cでも使えます。
    (Carthageに対応しているライブラリはSwiftのものが多いのかなと)

  • CocoaPodsも併用していますが、どちらも問題なく使えます。
    (※ただ、ストアに申請したことがないので、併用が本当に問題ないかどうかは現時点では不明です)

  • 読みは・・「カルタゴ」が正解?
    (カーセージと読んでしまう><)

Carthageインストール

Homebrew環境です。

$ brew install carthage

もしPermission Deniedが出たら

私の環境ではパーミッションのエラーが出てしまったのでメモです。

Error: Permission denied - /Library/Caches/Homebrew/Formula/carthage.brewing

こちらを参考にしました。

Permission denied - /Library/Caches/Homebrew/Formula/nmap.brewing

$ sudo chown -R $USER /Library/Caches/Homebrew/

ディレクトリの権限を変更しておきます。

Cartfile

Cartfileというファイルを用意します。
CocoaPodsでいうところのPodfileですね。

「Cartfile」という名称のファイルを自分で作って、プロジェクトのディレクトリに置きます。
(pod init的なものはないようです)

Cartfileの例

例えば、
https://github.com/LeoNatan/LNPopupController.git
こちらのライブラリをCarthageで管理したいとして、Cartfileには

github "LeoNatan/LNPopupController"

このように書きます。

☆ 参考: Example Cartfile
LNPopupController (標準のミュージックアプリのミニプレーヤーに似たステキなControllerです)

carthage update

Cartfileの準備ができたら、

$ carthage update

を実行します。

正常に完了すれば、

  • Carthage フォルダ
  • Cartfile.resolved ファイル

が追加されます。

プロジェクトの設定

Carthage/Build/iOSの中に、xxx.frameworkがあります。
(その他にdSYMファイルなどがあることもあります)

Carthageで管理しているFrameworkを、プロジェクトに追加しましょう。

Linked Frameworks and Libraries

  1. 「General」タブを開く。
  2. 「Linked Frameworks and Libraries」の「+」から、Carthage/Build/iOSにあるxxx.frameworkファイルを選択する。

Run Script

  1. 「Build Phases」タブを開く。
  2. 「+」から「New Run Script Phase」を追加する。
  3. 「Shell」の欄に/usr/local/bin/carthage copy-frameworksを追加する。
  4. 「Input Files」の「+」から、$(SRCROOT)/Carthage/Build/iOS/xxx.frameworkを追加する。

☆参考: If you're building for iOS

.gitignore

☆参考: github/gitignore/Objective-C.gitignore

# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build

上の.gitignoreでは、CathageのBuildフォルダだけ除外という感じですが、
Carthageフォルダごと除外でよいかと思います。

# Carthage
Carthage/

私はフォルダごと除外しています。

Cartfile.resolved

Cartfile.resolvedについては、

strongly recommended to commit this file to your repository.

と念押しされています。

CartfileCartfile.resolveは、もれなくGit管理してあげましょう。

以上です!

これで、Carthageのインストール 〜 ライブラリを利用する準備が整いました。
想像よりも気楽に準備が整えられたので良かったです。

それと、Run Scriptを追加する若干の手間はあるとしても、CocoaPodsよりもプロジェクトとの結合が疎な感じが、個人的には気に入りました☆

参考

[Swift] CocoaPodsとCarthageの違い / ライブラリ管理 - Qiita

Swiftで使えるライブラリ管理ツールCarthageの使い方