LoginSignup
1

More than 3 years have passed since last update.

【Swift】ライブラリ Example を Carthage で管理する方法

Last updated at Posted at 2019-07-11

はじめに

Carthage でライブラリを管理する場合 Cartfile に github "ReactiveX/RxSwift" といった感じで設定を記述すると思います。実は、ここにはローカルリポジトリを指定することも可能です。
この機能を使って scheme を分けて example を作成しているライブラリを Carthage で管理する方法をご紹介します。

この記事は AkkeyLab/RxScreenProtectKit というライブラリを作成・公開するにあたって学んだことをまとめたものになります。

問題

ドキュメント にもある通り git "file:///directory/to/project" "branch" という形式で記述すればいいことがわかります。
しかし、相対パス指定ができません(私の環境・方法では)。

解決策

echo "git \"file://$($(dirname $0); pwd)\"" >> Cartfile

Cartfile の保存場所がライブラリの保存場所と同じ場合、このスクリプトを実行することで、問題を解決できます。やってることとしてはカレントディレクトリの絶対パスを生成して Cartfile に追加しているだけの単純なものです。

git "file:///Users/name/Development/RxScreenProtectKit"

成功例も載せておきます。

おわりに

AkkeyLab/RxScreenProtectKit にも導入しておりますが、 example プロジェクトを動かしたい人用のスクリプトを準備しておくといいかもしれません。ここにも載せておきます。


#!/bin/bash

function command_exists {
  command -v "$1" > /dev/null;
}

echo "git \"file://$($(dirname $0); pwd)\"" >> Cartfile

# carthage
if ! command_exists brew ; then
  /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  brew update
  brew upgrade --all
  brew doctor
  brew -v
fi

if ! command_exists carthage ; then
  brew install carthage
fi

carthage update --platform iOS --no-use-binaries --cache-builds

# SwiftLint
if ! command_exists swiftlint ; then
  brew install swiftlint
fi

追記

Screen Shot 2019-07-12 at 16.27.40.png
実は Embedded Binaries の項目にビルドすることで自動生成される framework ファイルを追加する方法が一般的だと思います。ライブラリ開発時にサンプルを頻繁に使う場合、確実にこのほうが効率的です。この記事は方法の一つとしてご覧ください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1