November 10, 2013

Xcode5でiOS用スタティックライブラリのリンクを設定する

この記事にはXcode5(正確には5.0.1)でiOS用スタティックライブラリを追加する操作手順についてまとめています。XcodeがApple製品である以上、バージョンアップがかかったら差分がないか確認しないと恐ろしいので、「Xcodeを日常的に使っていれば、その操作は当然だ」という記述もあえて含めています。必要な場所のみ読み進めていただけると幸いです。

この記事に関連するために、事前にXcode5の振る舞いとして知っておくべき点を以下に示します。

  1. Xcodeの補完機能"Code Sence"はインデックスファイルを参照するが、このファイルはXcodeが起動した際に更新される
  2. Xcodeを開いているときに、Xcodeプロジェクトを他のXcodeプロジェクトにドラッグ&ドロップすると入れ子にできる

操作手順の一覧

大まかな操作手順は以下の通りです。

  1. ワークスペースの作成
  2. スタティックライブラリ用プロジェクトの作成
  3. スタティックライブラリの実装
  4. アプリケーション用プロジェクトの作成
  5. アプリケーション用プロジェクトとスタティックライブラリ用プロジェクトの親子関係を設定
  6. ワークスペースから重複しているスタティックライブラリ用プロジェクトを除外
  7. アプリケーション用プロジェクトでビルド設定を変更
  8. アプリケーション用プロジェクトでスタティックライブラリのリンク設定
  9. アプリケーション用プロジェクトでビルド
  10. Xcodeの再起動
  11. Xcodeの補完機能の動作確認
  12. アプリケーションの実行

以下で、画像を交えながら解説します。

1. ワークスペースの作成

ワークスペースを作成します。Xcodeのメニューから実行するのが楽だと思いますので、以下ではその例を示します。

fig01

2. スタティックライブラリ用プロジェクトの作成

ここでは、まずはスタティックライブラリ用のプロジェクトを作ります。作成するために、Xcodeの左下にあるプラス記号のアイコンを押します。すると一覧が表示され、"New Project..."という項目があるのでそれを選びます。Xcodeプロジェクトを作成する画面に移ります。

fig03fig04fig05

3. スタティックライブラリの実装

ここでは動作確認用にメソッドを追加して実装を完了したものとします。実装したメソッドにはNSLogでコンソールにログを出すよう書いています。仮に、実装中にヘッダーファイルを増やしたならば、"Build Phases"の"Copy Files"でそのファイルを追加します。

fig06fig07

4. アプリケーション用プロジェクトの作成

ここでは、Single View Applicationを利用してプロジェクトを作ります。

fig08fig09

5. アプリケーション用プロジェクトとスタティックライブラリ用プロジェクトの親子関係を設定

プロジェクト同士の親子関係を設定します。スタティックライブラリ用プロジェクトをアプリケーション用プロジェクトにドラッグ&ドロップします。

fig10

6. ワークスペースから重複しているスタティックライブラリ用プロジェクトを除外

先ほどの手順で、最初に作ったスタティックライブラリ用プロジェクトがワークスペース内で必要以上に重複しているので、これを除外します。

fig11

プロジェクトの参照設定のみを消すために"Remove Reference"を選択します。

fig12

7. アプリケーション用プロジェクトでビルド設定を変更

アプリケーション用プロジェクトで"Build Settings"を開きます。

fig13

項目がたくさんありますが、変更を加えるのは"User Header Search Paths"です。項目を絞り込むため、検索バーに"USE_HEADER_"と入力します。

fig14

USer Header Search Pathsをダブルクリックして、$(BUILT_PRODUCTS_DIR)と入力します。右側のnon-recurciveをrecurciveに変更します。

fig15fig16

8. アプリケーション用プロジェクトでスタティックライブラリのリンク設定

アプリケーション用プロジェクトで"Build Phases"を選びます。そのページから"Link Binary With Librarires"を開き、プラス記号のアイコンをクリックします。

fig17

そうすると、各ライブラリが一覧表示されます。今回は自作のものですので、Workspaceの中から選びます。

fig18

9. アプリケーション用プロジェクトでビルド

XcodeのメニューにあるProductからBuildを選択してビルドします。

fig19

ビルドが成功すると、スタティックライブラリがXcodeプロジェクトの初期値として設定されているビルドフォルダに生成され、同時にヘッダーファイルもコピーされています。XcodeのOrganizerから確認可能ですので、気になる場合はOrgnaizerにあるProjectタブからご自身のプロジェクトを選び、そこからDerivedData/Build/Product/includeフォルダに移動して確認します。

10. Xcodeの再起動

アプリケーション側でビルドを実行したら、Xcodeの補完機能が参照しているインデックスファイルを更新するために、ここでXcodeを終了し、再びワークスペースを開きます。

11. Xcodeの補完機能の動作確認

import文を追記するなどして、補完機能が働くか確認します。

fig20

12. ?アプリケーションの実行

実行する前にスキーマの設定がiOSデバイスを対象にしていることを確認します(下図の赤丸部分がスキーマ)。確認後、XcodeのメニューにあるProductからRunを選択して、アプリケーションを実行します。

fig22

スキーマ設定をシミュレーターに変更して、同様にアプリケーションが実行できることを確認します。

fig21

以上でアプリケーション用プロジェクトへのスタティックライブラリ設置が完了です。