私は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ディレクトリを設定する方法があるよう
私は '.dylib'と' .app'を持つワークスペースを持っているのでこれは普通ではなく、同じフォルダ( '.../DerivedData /.../ Build/Products/Debug')に置かれます。次に、 '.app/Resources/Frameworks'ディレクトリに' .dylib'をコピーする '.app'ビルドの一部としてスクリプトを用意しました。 – trojanfoe
アプリの出力には問題ありません。すべての必要なフレームワークはapp/Frameworksディレクトリに置かれています。これはビルド時の問題です。 "リンクバイナリライブラリ"ビルドフェーズで使用されるフレームワークバイナリは、アプリケーションのDerivedDataディレクトリにあります。そのディレクトリは、プロジェクトが別のディレクトリから作成されたときに変更されます。すべてのプロジェクトファイル/ソースは、ルートの下の1つのディレクトリの下にあります。それらを別のディレクトリにコピーすると、リンクするライブラリのパスが異なるため、プロジェクトはビルドされません。 – GTAE86
古いディレクトリと新しいディレクトリがピアである場合、古いバイナリへの相対パスは依然として有効なので、問題はマスクされます。その結果、参照されているフレームワークに加えられた変更は、まだ古いバージョンとリンクしているため、アプリケーションに表示されません。問題を確認する最も簡単な方法は、ワークスペース/プロジェクトに関してクリーンなマシンにソースをコピーすることです。すべてが整っていても、フレームワークにリンクするためのパスが修正されるまで構築されません。 – GTAE86