Xcode ワークスペース内のプロジェクト間の依存関係をどのように管理すればよいですか? 質問する

Xcode ワークスペース内のプロジェクト間の依存関係をどのように管理すればよいですか? 質問する

iOS アプリ プロジェクトに取り組んでおり、ワークスペースに json-framework プロジェクトを追加します。左側のプロジェクト ナビゲータには両方のプロジェクトが表示され、ビルド スキーム セレクタにも両方のプロジェクトのスキームが表示されます。ここで、json-framework プロジェクトの libjson.a ターゲットを、他のプロジェクトの iOS アプリ ターゲットへの依存関係として追加します。期待される結果は、アプリ ターゲットがビルドされるたびに (必要な場合) ライブラリ ターゲットがビルドされ、アプリ ターゲットがそれに対してリンクされることです。これを実行するために試した方法は次のとおりです。

  • 両方を同じスキームの一部としてビルドします。私がこれを試す方法は、アプリのスキームを編集し、スキームの「ビルド」部分に「libjson.a」を追加し、「暗黙の依存関係の検索」にチェックを入れることです。次に、アプリ ターゲットのターゲット エディターに移動し、「ビルド フェーズ」->「バイナリをライブラリにリンク」で、ワークスペース ライブラリのリストから「libjson.a」を選択します。その後、スキームをビルドしようとすると、ライブラリ ターゲットはビルドされますが、アプリ ターゲットのビルドはリンカー エラー「-ljson のライブラリが見つかりません」で失敗します。これは、ライブラリがビルドされたことが実際には検出されていないことを示しています。実際、プロジェクト ナビゲータでは、ライブラリのアプリ プロジェクトのエントリは依然として赤で、ファイルが存在しないことを示しています。

  • json ターゲットを明示的な依存関係として追加します。これを試すには、ビルド スキームを変更せずに、アプリ ターゲットのターゲット エディターに移動し、[ターゲット依存関係] の下の追加ボタンをクリックします。ワークスペース内の他のプロジェクトのターゲットは表示されないため、これは開始できません。

  • JSONプロジェクトを他のプロジェクトにドラッグし、ターゲットを依存関係として追加します。これは、Xcode 3で私が行っていたことです。プロジェクトナビゲータで、ライブラリプロジェクトをつかんでアプリプロジェクトにドラッグします。これにより、通常の「ファイルの追加」ペインが表示されますが、「完了」をクリックして閉じます。プロジェクト ナビゲータにライブラリ プロジェクトのエントリが 1 つあります。1 つは最上位レベル、もう 1 つはアプリ プロジェクトの下にあります。これで、ターゲット エディタを使用してライブラリ ターゲットをアプリ ターゲットの依存関係として追加し、ライブラリのリンク フェーズでエラーなしでリンクできるようになりました。ただし、これは壊れているように見えます。ナビゲータに同じプロジェクトのエントリが複数あります。これを行う別の方法はありますか?

同じワークスペース内の異なるプロジェクト内のこれらのターゲットを接続する「Xcode 4 風」の方法とは何でしょうか? 同じワークスペース内の複数のプロジェクトが実際に相互にやり取りできないとしたら、不十分に思えます。ありがとう、Graham。

ベストアンサー1

バージョン 3 で説明されているとおり、新しいワークスペースを作成し、そこに 2 つの Xcode プロジェクトをドラッグして、図のようにネストし、テスト プロジェクトを設定しました。

兄弟プロジェクトがすでにある場合は削除できます。

私が見る限り、これに対してビルドを実行すると、問題なく動作します。

スキーム設定 プロジェクトレイアウト

2 つのプロジェクトがある場合は、内部パスの混乱が発生すると思いますので、「表示」->「ユーティリティ」->「ファイル インスペクター」で場所の設定をいじって、どのような効果があるか確認したいと思うでしょう。

ここに画像の説明を入力してください ここに画像の説明を入力してください

他に試すことができるのは、Xcode の「環境設定…」->「ソース ツリー」でパスを設定し、ここで説明されているようにその方法で参照することです。iPhone アプリ間での簡単なモジュール式コード共有: 静的ライブラリとプロジェクト間参照

ありがとう。アンディ W.

おすすめ記事