アトトック代表の開発ブログ

プログラミングや会社のこと、写真、自転車のことなど書いてます。

Carthageでライブラリを管理する

今までXcodeのライブラリの管理はCocoaPodで管理していましたが、メインの言語をSwiftに変更するのに合わせてCarthageを使ってみます。

CarthageのQuick Startを参考に進めます。

前提条件

macOSにHomebrewがインストールされていること

Carthageをインストール

インストール方法は、こちらに記載されています。
インストール方法は下記の3つの方法があります。

  • パッケージをダウンロードしてインストール
  • Homebrewでインストール
  • ソースを取得しmake install

今回はHomebrewでインストールします。

$ brew install carthage


$ carthage version
0.29.0

carthage 0.29.0がインストールされました。

Cartfileを作成

プロジェクトのフォルダにCartfileを作成しインストールするライブラリを定義します。
今回のプロジェクトで使用するAPIKitを設定してみます。

github "ishkawa/APIKit" ~> 3.1

ライブラリをインストール

carthage updateでライブラリをインストールします。
platformを指定しないとiOSMac、tvOS、watchOSのプラットフォームのライブラリがビルドされます。

$ carthage update
*** Cloning APIKit
*** Cloning Result
*** Checking out APIKit at "3.2.1"
*** Checking out Result at "3.2.4"
*** xcodebuild output can be found in /var/folders/w7/_wr_6y2x1vddzkt6xqdd_cj40000gs/T/carthage-xcodebuild.yOJLMa.log
*** Building scheme "Result-iOS" in Result.xcodeproj
*** Building scheme "Result-Mac" in Result.xcodeproj
*** Building scheme "Result-tvOS" in Result.xcodeproj
*** Building scheme "Result-watchOS" in Result.xcodeproj
*** Building scheme "APIKit" in APIKit.xcworkspace

iOS用のライブラリだけインストールしたい場合は、platformオプションでiosを指定します。

$ carthage update --platform ios
*** Fetching APIKit
*** Fetching Result
*** Checking out APIKit at "3.2.1"
*** Checking out Result at "3.2.4"
*** xcodebuild output can be found in /var/folders/w7/_wr_6y2x1vddzkt6xqdd_cj40000gs/T/carthage-xcodebuild.7l8sek.log
*** Building scheme "Result-iOS" in Result.xcodeproj
*** Building scheme "APIKit" in APIKit.xcworkspace

carthage updateを実行するとプロジェクトフォルダにCartfile.resolvedが作成されます。

github "antitypical/Result" "3.2.4"
github "ishkawa/APIKit" "3.2.1"

ビルドしたライブラリは、Carthage/Build/iOSに保存されます。
Cartfileに設定したAPIKitはCarthage/Build/iOS/APIKit.frameworkが作成されます。

FrameworkをXcodeのプロジェクトに追加

ビルドされたFrameworkをXcodeのプロジェクトに追加します。
Xcodeのプロジェクトを開き、TARGETを選択し「Linked Frameworks and Libraries」にビルドしたライブラリを追加します。

f:id:kurusaki:20180724083032p:plain

Run Scriptを設定

Build Phasesの+ボタンから「New Run Script Phase」を選択しRun Scriptを追加します。

f:id:kurusaki:20180724083300p:plain

Shellの下のScript欄に下記の内容を追加します。

/usr/local/bin/carthage copy-frameworks

f:id:kurusaki:20180724083407p:plain

Input Filesを設定

Input Filesに使用するFrameaorkのパスを追加します。

$(SRCROOT)/Carthage/Build/iOS/APIKit.framework
$(SRCROOT)/Carthage/Build/iOS/Result.framework

f:id:kurusaki:20180724083519p:plain

確認

今回は、APIKitを追加したのでFrameworkが使用できるかimportしてビルドしてみます。

f:id:kurusaki:20180724083610p:plain

問題なくビルドできました。
これでとりあえず開発を進められます。