2012-04-23 21 views
1

私のプログラムのインストーラをビルドするために、必要なバイナリをすべて一時的な場所にコピーしてパッケージをビルドするために必要なロジックを実行する 'installer' Xcodeプロジェクト/ターゲットを追加しました。XCodeスキームビルドターゲットのビルド順序

私が抱えている問題は、インストーラプロジェクトをビルドしようとするたびに(必要に応じて)ビルドされるように、このインストーラプロジェクトを他のいくつかのプロジェクトに直接依存させたいということです。

私は(スキーマで)インストーラのビルドターゲットリストにすべてのターゲットを追加し、彼らはこのように命じている:私はクリーンビルドを行うときに

Project A 
Project B 
Project C 
Installer (self) 

は、しかし、私はビルドに(ビルド順序を参照してください見ます

Project C 
Installer 
Project A 
Project B 

特定のビルド順序を強制する必要があります。そうしないと、インストーラでファイルを使用できなくなります。 XCodeでは、UI内でこれらのアイテムの順序を変更できますが、その順序は何もしないようです。依存関係の構築順序を強制する方法はありませんか?

答えて

3

ターゲットA、B、およびCターゲットインストーラターゲットの依存関係を作成します。これにより、インストーラの前にA、B、およびCが確実に作成されます。プロジェクトナビゲータからプロジェクトファイルを選択して、プロジェクトエディタを開きます。ターゲットのリストからインストーラターゲットを選択します。エディタの上部にある「ビルド段階」ボタンをクリックして、ターゲットのビルド段階を表示します。ターゲット依存関係構築フェーズの横にある開閉用の三角形をクリックします。 +ボタンをクリックして依存関係を追加します。

ターゲット依存関係を追加すると、ターゲットA、B、およびCがインストーラーの前にビルドされます。 A、B、Cを特定の順序で構築する必要がある場合は、ターゲット依存関係をさらに追加する必要があります。

+0

私はそれも正しい方法だと思っていましたが、ターゲット依存関係を働かせることができませんでした。 '+'ボタンをクリックすると、「利用可能なアイテムがありません」というメッセージが表示され、プロジェクトの1つから.app製品の1つをクリックしてそのスペースにドラッグしようとすると、何も起こりません。これは空のプロジェクトとして私の 'インストーラ'を作成したためですが、実行可能なサンプルプロジェクトから始めることを望んでいない(スクリプトのみ)コードがないためです。 「No items are available」リストにアイテムを追加する方法を教えていただけたら、私は感謝しています! – Locksleyu

+0

ターゲット依存関係はプロジェクトにまたがっていません。ターゲット依存関係を使用できるようにするには、インストーラのプロジェクトにA、B、Cのターゲットを追加する必要があります。あなたのケースでは、4つの目標を持つ1つのプロジェクトが4つの別々のプロジェクトを持つよりもうまくいくでしょう。 –

0

XCodeでは、これらの項目の順序をUIで変更できますが、 の順番は変更されません。

私のケースでは、「並列化ビルド」がスキーム「ビルド」タブで選択されたときにこれが起こっていました。

このチェックボックスを無効にすると、Xcodeは常にターゲットに対して選択した順番に従います。

"Parallelize Build"を有効にすると、それらの間に依存関係のないターゲットがすべて並列に構築され、結果としてアウトオブオーダーが完了する可能性があります。一方

、あなたは厳密に従うべき彼らの シーケンシャルオーダーをご希望の場合は、よく...それはまさに 並列建物の反対だ、したがって、あなたはそのオプションを無効にする必要があります。