2013-10-10 9 views
6

私は2つのフレームワークとそれらのフレームワークを使用する実行可能ファイルを構築するWorkspace Application.xcworkspaceを持っています。おおよその配置方法は次のとおりです。XCode Frameworkリファレンスパスとビルド出力ディレクトリ

  • Framework_1 - ビルドして醜いDerivedDataパスにします。

  • Framework_2 - Framework1は、プロジェクトのフレームワーク領域に含まれ、「ライブラリ付きバイナリライブラリ」ビルドフェーズで指定され、醜いDerivedDataパスに出力されます。

  • アプリケーション - プロジェクトのフレームワーク領域に含まれ、「ライブラリ付きリンクバイナリ」ビルドフェーズで指定されているFramework_1とFramework_2に依存します。出力ディレクトリは、その醜いDerivedDataパスです。

私が持っている問題は、参照フレームワークのプロジェクトファイルにパスがDerivedData醜いパスしていることである - 彼らは../../Library/Developer/XCode/DerivedData/Application-longuglyuniquestring/のようなものですビルド/製品/リリース/ Framework_1.framework。

ソースを別のディレクトリにコピーするか、バージョンコントロールにチェックインして別のマシンにチェックアウトすると、それらのフレームワークパスは有効ではなくなります。それらは再生成されます。参照されているフレームワークは、プロジェクトでは赤で表示されます。 Framework_1ビルド - ワークスペースをビルドし

  • :私は別のフォルダにワークスペースを構築したいとき

    はこれまでのところ、私は問題を修正した方法がにあります。

  • そのフレームワークの[製品]ノードに移動し、Finderに表示します。
  • 新しい醜いパスをコピーします。
  • Framework_2とApplicationのプロジェクトファイルを開き、Framework_1とFramework_2のパスを修正します。
  • すべての赤い項目を解決し、すべてを構築する必要があります。

このプロセスは面倒で、私はプロジェクトファイルを編集することができて幸いです。私がプロジェクトファイルについて知っていることを少しも理解していない同僚にとっては、コードをチェックしてビルドしたいだけです。

フレームワークのビルド出力ディレクトリに何かする必要がありますか?私は醜い道が推奨されているので、それを変更することを心配している。これらのフレームワークを私のワークスペースに相対的な予測可能な場所に配置するために使用できるコピーファイルオプションはありますか?

ご協力いただければ幸いです。私は何か単純なものが欠けていると確信しています。ソースコントロールからチェックアウトされたコードや別のディレクトリにコピーされたコードはビルドしないだけでは意味がありません。ごとのワークスペース毎にDerivedDataディレクトリを設定する方法があるよう

+0

私は '.dylib'と' .app'を持つワークスペースを持っているのでこれは普通ではなく、同じフォルダ( '.../DerivedData /.../ Build/Products/Debug')に置かれます。次に、 '.app/Resources/Frameworks'ディレクトリに' .dylib'をコピーする '.app'ビルドの一部としてスクリプトを用意しました。 – trojanfoe

+0

アプリの出力には問題ありません。すべての必要なフレームワークはapp/Frameworksディレクトリに置かれています。これはビルド時の問題です。 "リンクバイナリライブラリ"ビルドフェーズで使用されるフレームワークバイナリは、アプリケーションのDerivedDataディレクトリにあります。そのディレクトリは、プロジェクトが別のディレクトリから作成されたときに変更されます。すべてのプロジェクトファイル/ソースは、ルートの下の1つのディレクトリの下にあります。それらを別のディレクトリにコピーすると、リンクするライブラリのパスが異なるため、プロジェクトはビルドされません。 – GTAE86

+0

古いディレクトリと新しいディレクトリがピアである場合、古いバイナリへの相対パスは依然として有効なので、問題はマスクされます。その結果、参照されているフレームワークに加えられた変更は、まだ古いバージョンとリンクしているため、アプリケーションに表示されません。問題を確認する最も簡単な方法は、ワークスペース/プロジェクトに関してクリーンなマシンにソースをコピーすることです。すべてが整っていても、フレームワークにリンクするためのパスが修正されるまで構築されません。 – GTAE86

答えて

2

が見える - Xcode 4 - build output directory

私はちょうどそれに応じてプロジェクトファイルを編集し、その後、私のワークスペースへの相対値でDerivedDataを設定します。唯一の欠点は、既定のDerivedDataパスを使用していた別のワークスペースでこれらのプロジェクトの1つを使用する場合、それらを元に戻す必要があることです。

ユーザーDaGaMsに感謝します。彼はアップヴォートを手に入れました。

私はまだXCode 5から悪い動作を見ています:私は自分のマシンでプロジェクトを作業しています。それを別の下位のディレクトリにコピーし、まだ動作していることを確認しました。 XCodeを終了し、含まれているディレクトリをネットワークドライブにコピーし、そこから別のMacにコピーします。私が他のMacでそれを開いたとき、私は変更のいくつかをしたことがなかったようでした。さらに悪いことに、私はそれを修正するために働いたとき、XCodeはナットをし、私のFRAMEWORK_SEARCH_PATHSパスの各端に6つの余分な '\'文字を追加しました!

私のアプリのサブプロジェクトディレクトリには、相対的ではなく絶対的な問題があります。ワークスペースの一番上にあるプロジェクトは「相対的なグループ」なので、サブプロジェクトを同じ属性に変更しました。これは問題を解決したようですが、何らかの理由ですべてのファイルを別のマシンにコピーすると、派生データのリダイレクトはそれと一緒に実行されません。