2012-04-22 16 views
10

私はXcode 4.3を使用してOS Xのフレームワークを作成しています。このワークスペースに入るワークスペースとプロジェクト(フレームワークターゲット付き)を作成しました。同じワークスペース内の2つのプロジェクト間のターゲット依存関係

ここでは、同じワークスペースにと追加したサードパーティ製のフレームワークに&リンクを追加したいと思います(ただし、私のプロジェクトでは使用できません)。 「リンクバイナリライブラリあり」の+ボタンをクリックし、サードパーティフレームワークが使用可能なライブラリの一覧に表示されました。サードパーティ製のライブラリがまだ構築されていないよう

がリンクフレームワークは、プロジェクトナビゲータの赤い現れる(紛らわしい、しかし、私のプロジェクトが正常にビルド - 私はまだ使用サードしようとしていないよものの、パーティのフレームワーク):

私は、ターゲットの依存関係としてそれを追加することによってこの問題を解決するつもりだったが、私は「ターゲットの依存関係」の位相を構築する上+をクリックすると、サードパーティ製のターゲットは」doesnのリストには表示されません。

この依存関係を適切に設定/解決する方法を教えてください。また、フレームファイルがターゲットのFrameworksディレクトリにコピーされるように、ファイルコピービルドフェーズを作成する必要がありますか?どうすればそれを適切に設定できますか?

+0

Xcodeはあなたがリンクしているので自動的にそれを依存関係として構築すると思います。このために表示されないことがあります。フレームワークは、リリース構成のファイルのみを検出するため、おそらく赤です。 – ughoavgfhw

+0

@ughoavgfhwはい、私は自動的にワークスペース内の依存関係を検出してビルドできることを読んだと思います。しかし、なぜあなたはリリース構成のファイルだけを検出すると言いますか? (私は、プロダクト> Build For> Archiveを試してみましたが、まだ赤です。)また、ファイルコピーフェーズを明示的に設定する必要があると思いますか? – jtbandes

+0

前回私が見たところでは、出力リファレンスはリリースビルドのパスを使用していました。また、新しいワークスペースに以前のプロジェクトを追加した場合、その参照は別のビルドの場所を参照している可能性があります。アプリケーションの内部にフレームワークをパッケージ化する場合は、ファイルコピーフェーズを設定する必要があります。 – ughoavgfhw

答えて

10

私は静的ライブラリと同様に動作しました。

  • あなたは
  • 探し
  • アプリターゲットのリンク構築フェーズでフレームワークへの参照を削除して(それが失敗しても、フレームワークが構築する必要があります)あなたのアプリケーションを構築し、フレームワークを構築するために何をしたかですかFinder(あなたのアプリケーションワークスペースによって構築されたもの)内に構築されたフレームワーク。
  • それを使用するアプリプロジェクトにドラッグアンドドロップします。今回は黒色(赤色ではない)で表示されます。
  • これをクリックし、Xcodeインスペクタで「組み込み製品との相対性」が表示されていることを確認します(参照型を変更する必要があります)。 myframework.framework。
  • アプリリンクフェーズに追加されていることを確認してください(それはあります)
  • これはコピー/ビルドフェーズで使用できるものです。
+0

今後の読者向け:このソリューションは[この開発者フォーラムのスレッド](https://devforums.apple.com/thread/148935)から入手できます。このディスカッションにはさらに詳しい説明があります。 – jtbandes

+4

フレームワーク/ライブラリの検索パスに '$(BUILT_PRODUCTS_DIR)'を追加すると便利です。 – superlukas

関連する問題