web-dev-qa-db-ja.com

サブプロジェクトとビルドをトリガーするプロジェクトの依存関係を持つXcodeワークスペース

Xcode 5のこれに関するより良いドキュメントがあればいいのですが、ワークスペースで作業するためのベストプラクティスを説明するまともなものは見つかりませんでした。

複数のプロジェクト(カップルフレームワーク、1つのアプリ)があるワークスペースでは、必要な場合(変更が見つかった場合)にXcodeがすべての依存プロジェクトonlyをビルドすることが可能ですすべてのプロジェクトをすべての依存プロジェクトに含める

Navigation Viewの混乱であるため、5-6個のサブプロジェクトではなく、それに依存するプロジェクトにフレームワークを持ちたいです-
サブプロジェクト内のファイルは常に検索結果に表示され、NavViewのサブプロジェクトはプロジェクト内の何らかの理由で展開します。

ただし、特定のプロジェクトが依存するプロジェクトを含めないでくださいXcode 5でフレームワークを自動的に再構築する方法が見つかりませんでした依存関係の1つが変更された場合。

40
Jay

このソリューションは別の問題を対象としていましたが、おそらくあなたのニーズを満たすでしょう。

サブプロジェクトをワークスペースに追加した後:

  1. 新しく追加されたサブプロジェクトを使用するターゲットを選択します
  2. [ビルドフェーズ]の下の[ライブラリとバイナリをリンク]で[+]ボタンを押します
  3. ライブラリが表示されない場合は、「その他を追加...」を押します
  4. プロジェクトファイル(* .xcodeproj)があるフォルダーに移動します。
  5. マークして「開く」をクリックします
  6. これで、「ライブラリとバイナリをリンク」の下にプロジェクトファイルが表示されます。
  7. 同じタブの[ターゲットの依存関係]で、[+]ボタンを押します
  8. これで、必要なファイルが表示されます
  9. あなたのものをチェックし、「追加」を押してください
  10. 再び「ライブラリとバイナリをリンク」で+ボタンを押します
  11. これで.aファイルが表示され、選択して追加できます。

これで、ターゲットに選択したライブラリを使用しています。このサブプロジェクトを必要とするすべてのターゲットに対してこれらの手順を繰り返します。お役に立てば幸いです!私にとっては、以前に依存関係を追加することができなかったためです...

グリーツ、トムテ

47
Tomte

Xcode 7で他の誰かがこれに問題を抱えている場合に備えて、追加またはドロップする前に、サブプロジェクトとして追加するプロジェクトがnot openであることを確認してください。

16
Raspu

オンXCode 5行く必要があります

  • 左のタブでプロジェクトを選択します
  • TARGETSセクションでターゲットを選択します
  • 次に、[ビルドフェーズ]> [ターゲットの依存関係]で「+」を押します
  • 追加したプロジェクトをターゲットとして選択すると、ターゲットの依存関係リストに表示されます

それが機能する場合、必要に応じてすべてのターゲット依存関係をビルドするときに一緒にビルドされます。

8
loretoparisi

これは、Tomteの回答から派生しています。彼のアプローチは、私にDependency Analysis Errorを引き起こしていました。これはより単純なアプローチであり、Tomteの答えが機能する理由を説明しています。

  1. サブプロジェクトをクリックして、サブプロジェクトをターゲットにする必要があるプロジェクトにドラッグします。
  2. オプションアラートが表示されます。 必要に応じてアイテムをコピーするが選択されていないことを確認します。 グループの作成が選択されていることを確認してください。プロジェクトのターゲットが選択されていないことを確認してください。 完了ボタンを押します。
  3. サブプロジェクト参照を追加したばかりのプロジェクトをクリックします。
  4. サブプロジェクトに依存させるターゲットをクリックします。
  5. Target Dependecies +ボタンをクリックします。
  6. サブプロジェクトの製品がオプションとしてリストされていることに注意してください。選択してください。

Tomteのアプローチを使用する場合、プロジェクトがライブラリとバイナリをリンクに追加されると、プロジェクト参照が作成されることに注意してください。このプロジェクト参照は、プロジェクトのFrameworksグループにあります。

これが良いアプローチであるかどうかについて、私は対立しています。私の意見では、スキームのアプローチはあまり良くありません。ワークスペースプロジェクトがデフォルトでこの関係を持たない理由を実際に疑問に思っています。

少なくとも、これでTomteのソリューションの魔法が解消されるはずです。

6
Fostah

すべてのターゲットをビルドするスキームを作成できます。

5
ulle