こんにちは、 株式会社ジェネシックス の徐 廷(@TonnyXu)です。 iPhoneの共通モジュールのベストプラクティスに関してです。

文章が長くなりますので、5回に分けてお届けします。

今回は、3回目となります。

その1

■ 共通プロジェクトを作る

その2

■ コンシューマPJを作る

■ コンシューマPJで共通プロジェクトを引用

その3

■ 引用後のコンシューマPJでの必須設定

その4

■ コンシューマPJを実行する

その5

■ さらに

・ 共通プロジェクトに単体テストを追加

・ オープンソースライブラリを作る

 

■ 引用後のコンシューマPJでの必須設定

必須となる設定は三つあります。
  1. 共通プロジェクトを利用するために、ヘッダーファイルの置き場所を指定。
  2. コンシューマPJをコンパイルする前に、まず共通モジュールをまずコンパイルするように設定。いわゆる依存関係を設定。
  3. コンシューマPJをリンクする時、共通モジュールをリンク。

まず、1番目の設定を行いましょう。プロジェクトのルートノードCommonConsumerをダブルクリックすると、下図の設定画面が出てきます。


setting 1 for consumer PJ, header search path.
図15:CommonConsumerのプロジェクト設定画面

図15画面上にある検索ボックスに"header"を入力してみましょう。絞り込んだ設定項目画面で Header Search Path項目の右にある空セルをダブルクリックして、"../Common"を入力してください。Recursivelyチェックボックスはそのままでかまいません。完了したら下図の画面と同じかどうかを確認してください。


setting 1, header path.
図16:Header Search Pathの値

図16に、相対Pathを記入しています。画面のOKを押して、次の設定へ行きましょう。

次はプロジェクトの依存関係を設定します。左側のTargetsノードをダブルクリックしてください。


setting 2 for consumer PJ, dependency project.
図17:Targetの設定画面(図15とほぼ同じ、ただし、少し違いがあります)

図17のGeneralタブを選択して、Direct Dependenciesの下にある「+」ボタンを押してください。下記の画面が出てきたら、Commonを選択してください。


setting 2 for consumer PJ, select dependency pj.
図18:依存先を選択

これで、コンパイルができるはずです。コンパイルすると、下図のような画面が出てきます。リストの一番上にCommonプロジェクトをコンパイルしたことが示されています。


setting 2 for consumer PJ, compile OK after adding dependency.
図19:依存関係を設定後、コンパイル結果画面

最後もう一つの設定が不可欠です。コンパイル後、共通モジュールをコンシューマPJにリンクします。コンシューマPJのCommonプロジェクトノードの下に表示される「libCommon.a」をドラッグして、「targets」の「CommonConsumer」の「Link Binary with Libraries」にドロップしてください。結果は下図の画面のようになります。


setting 3 for consumer PJ, adding link option and invoke common module
図20:共通モジュールのバイナリファイルをリンクする

ここまでで、コンシューマPJでの共通モジュールの設定が終わりました。続いて、コンシューマPJで共通モジュールのクラスを利用してみましょう。