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を指定しないとiOS、Mac、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」にビルドしたライブラリを追加します。
Run Scriptを設定
Build Phasesの+ボタンから「New Run Script Phase」を選択しRun Scriptを追加します。
Shellの下のScript欄に下記の内容を追加します。
/usr/local/bin/carthage copy-frameworks
Input Filesを設定
Input Filesに使用するFrameaorkのパスを追加します。
$(SRCROOT)/Carthage/Build/iOS/APIKit.framework $(SRCROOT)/Carthage/Build/iOS/Result.framework
確認
今回は、APIKitを追加したのでFrameworkが使用できるかimportしてビルドしてみます。
問題なくビルドできました。
これでとりあえず開発を進められます。