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

<p>この記事にはXcode5(正確には5.0.1)でiOS用スタティックライブラリを追加する操作手順についてまとめています。XcodeがApple製品である以上、バージョンアップがかかったら差分がないか確認しないと恐ろしいので、「Xcodeを日常的に使っていれば、その操作は当然だ」という記述もあえて含めています。必要な場所のみ読み進めていただけると幸いです。</p><!–more–><p>この記事に関連するために、事前にXcode5の振る舞いとして知っておくべき点を以下に示します。</p><ol> <li>Xcodeの補完機能"Code Sence"はインデックスファイルを参照するが、このファイルはXcodeが起動した際に更新される</li> <li>Xcodeを開いているときに、Xcodeプロジェクトを他のXcodeプロジェクトにドラッグ&amp;ドロップすると入れ子にできる</li></ol><h2>操作手順の一覧</h2><p>大まかな操作手順は以下の通りです。</p><ol> <li>ワークスペースの作成</li> <li>スタティックライブラリ用プロジェクトの作成</li> <li>スタティックライブラリの実装</li> <li>アプリケーション用プロジェクトの作成</li> <li>アプリケーション用プロジェクトとスタティックライブラリ用プロジェクトの親子関係を設定</li> <li>ワークスペースから重複しているスタティックライブラリ用プロジェクトを除外</li> <li>アプリケーション用プロジェクトでビルド設定を変更</li> <li>アプリケーション用プロジェクトでスタティックライブラリのリンク設定</li> <li>アプリケーション用プロジェクトでビルド</li> <li>Xcodeの再起動</li> <li>Xcodeの補完機能の動作確認</li> <li>アプリケーションの実行</li></ol><p>以下で、画像を交えながら解説します。</p><h2>1. ワークスペースの作成</h2><p>ワークスペースを作成します。Xcodeのメニューから実行するのが楽だと思いますので、以下ではその例を示します。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig011.png"><img class="alignnone size-full wp-image-5372" alt="fig01" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig011.png" width="573" height="288"></a><h2>2. スタティックライブラリ用プロジェクトの作成</h2><p>ここでは、まずはスタティックライブラリ用のプロジェクトを作ります。作成するために、Xcodeの左下にあるプラス記号のアイコンを押します。すると一覧が表示され、"New Project…"という項目があるのでそれを選びます。Xcodeプロジェクトを作成する画面に移ります。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig03.png"><img class="alignnone size-full wp-image-5298" alt="fig03" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig03.png" width="985" height="575"></a><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig04.png"><img class="alignnone size-large wp-image-5299" alt="fig04" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig04-1024x569.png" width="604" height="335"></a><a style="line-height: 1.5;" href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig05.png"><img class="alignnone size-large wp-image-5300" alt="fig05" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig05-1024x560.png" width="604" height="330"></a><h2>3. スタティックライブラリの実装</h2><p>ここでは動作確認用にメソッドを追加して実装を完了したものとします。実装したメソッドにはNSLogでコンソールにログを出すよう書いています。仮に、実装中にヘッダーファイルを増やしたならば、"Build Phases"の"Copy Files"でそのファイルを追加します。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig06.png"><img class="alignnone size-large wp-image-5301" alt="fig06" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig06-1024x560.png" width="604" height="330"></a><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig07.png"><img class="alignnone size-large wp-image-5302" alt="fig07" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig07-1024x560.png" width="604" height="330"></a><h2>4. アプリケーション用プロジェクトの作成</h2><p>ここでは、Single View Applicationを利用してプロジェクトを作ります。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig08.png"><img class="alignnone size-large wp-image-5303" alt="fig08" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig08-1024x569.png" width="604" height="335"></a><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig09.png"><img class="alignnone size-large wp-image-5304" alt="fig09" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig09-1024x560.png" width="604" height="330"></a><h2>5. アプリケーション用プロジェクトとスタティックライブラリ用プロジェクトの親子関係を設定</h2><p>プロジェクト同士の親子関係を設定します。スタティックライブラリ用プロジェクトをアプリケーション用プロジェクトにドラッグ&amp;ドロップします。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig10.png"><img class="alignnone size-full wp-image-5305" alt="fig10" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig10.png" width="946" height="464"></a><h2>6. ワークスペースから重複しているスタティックライブラリ用プロジェクトを除外</h2><p>先ほどの手順で、最初に作ったスタティックライブラリ用プロジェクトがワークスペース内で必要以上に重複しているので、これを除外します。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig11.png"><img class="alignnone size-full wp-image-5306" alt="fig11" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig11.png" width="481" height="395"></a><p>プロジェクトの参照設定のみを消すために"Remove Reference"を選択します。</p><a style="line-height: 1.5; color: #ea9629; text-decoration: underline; outline: #000000;" href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig12.png"><img class="alignnone size-full wp-image-5307" alt="fig12" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig12.png" width="666" height="267"></a><h2>7. アプリケーション用プロジェクトでビルド設定を変更</h2><p>アプリケーション用プロジェクトで"Build Settings"を開きます。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig13.png"><img class="alignnone size-large wp-image-5308" alt="fig13" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig13-1024x484.png" width="604" height="285"></a><p>項目がたくさんありますが、変更を加えるのは<strong>"User Header Search Paths"</strong>です。項目を絞り込むため、検索バーに"USE_HEADER_"と入力します。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig14.png"><img class="alignnone size-large wp-image-5309" alt="fig14" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig14-1024x484.png" width="604" height="285"></a><p>USer Header Search Pathsをダブルクリックして、<span style="color: #800000;"><strong>$(BUILT_PRODUCTS_DIR)</strong></span>と入力します。右側のnon-recurciveをrecurciveに変更します。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig15.png"><img class="alignnone size-large wp-image-5310" alt="fig15" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig15-1024x469.png" width="604" height="276"></a><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig16.png"><img class="alignnone size-large wp-image-5311" alt="fig16" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig16-1024x484.png" width="604" height="285"></a><h2>8. アプリケーション用プロジェクトでスタティックライブラリのリンク設定</h2><p>アプリケーション用プロジェクトで"Build Phases"を選びます。そのページから"Link Binary With Librarires"を開き、プラス記号のアイコンをクリックします。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig17.png"><img class="alignnone size-large wp-image-5312" alt="fig17" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig17-1024x503.png" width="604" height="296"></a><p>そうすると、各ライブラリが一覧表示されます。今回は自作のものですので、Workspaceの中から選びます。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig18.png"><img class="alignnone size-large wp-image-5313" alt="fig18" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig18-1024x503.png" width="604" height="296"></a><h2>9. アプリケーション用プロジェクトでビルド</h2><p>XcodeのメニューにあるProductからBuildを選択してビルドします。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig19.png"><img class="alignnone size-full wp-image-5314" alt="fig19" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig19.png" width="709" height="377"></a><p>ビルドが成功すると、スタティックライブラリがXcodeプロジェクトの初期値として設定されているビルドフォルダに生成され、同時にヘッダーファイルもコピーされています。XcodeのOrganizerから確認可能ですので、気になる場合はOrgnaizerにあるProjectタブからご自身のプロジェクトを選び、そこからDerivedData/Build/Product/includeフォルダに移動して確認します。</p><h2>10. Xcodeの再起動</h2><p>アプリケーション側でビルドを実行したら、Xcodeの補完機能が参照しているインデックスファイルを更新するために、ここでXcodeを終了し、再びワークスペースを開きます。</p><h2>11. Xcodeの補完機能の動作確認</h2><p>import文を追記するなどして、補完機能が働くか確認します。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig20.png"><img class="alignnone size-large wp-image-5315" alt="fig20" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig20-1024x503.png" width="604" height="296"></a><h2>12. ?アプリケーションの実行</h2><p>実行する前にスキーマの設定がiOSデバイスを対象にしていることを確認します(下図の赤丸部分がスキーマ)。確認後、XcodeのメニューにあるProductからRunを選択して、アプリケーションを実行します。</p><img class="alignnone size-large wp-image-5317" style="line-height: 1.5;" alt="fig22" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig22-1024x503.png" width="604" height="296"><p>スキーマ設定をシミュレーターに変更して、同様にアプリケーションが実行できることを確認します。</p><a href="https://www.hiroakit.com/wp-content/uploads/2013/11/fig21.png"><img class="alignnone size-large wp-image-5316" alt="fig21" src="https://www.hiroakit.com/wp-content/uploads/2013/11/fig21-1024x437.png" width="604" height="257"></a><p>以上でアプリケーション用プロジェクトへのスタティックライブラリ設置が完了です。</p>