7

記述子ファイルから C ヘッダーを生成するツールを Xcode 4 に統合しようとしています。Xcode 3 では、特定の拡張子を持つファイルのカスタム ビルド ステップを追加することができました。これらのファイルは、それらを含む .m/.mm/.cpp ファイルの前にコンパイルされます。Xcode 4 でこれを実行しようとすると、他のソースをコンパイルした後にカスタム ステップが実行されるようです。これはもちろんうまくいきません。前にステップを実行するように Xcode に指示する方法はありますか?

簡単な再現セットアップは次のとおりです。

ここに画像の説明を入力

私のmain.mには以下が含まれています:

#include <mytest.h>

${DERIVED_FILE_DIR}ヘッダー検索パスに追加しました。このプロジェクトをコンパイルすると、次のようになります。

ここに画像の説明を入力

インクルードを削除して再度ビルドすると、次のようになります。

ここに画像の説明を入力

したがって、ルールは実際に機能していますが、実行が遅すぎます。この動作を変更する方法はありますか?

4

3 に答える 3

7

私はすでにリバイバルバッジを持っていますが、ここに行きます :)

私はちょうどこの問題に出くわしましたが、答えは簡単です (今、私はそれを見つめるのに半日を費やしました)。

ビルド ルールはソース ファイル (.abc) に応答しており、ソース ファイルは「ソースのコンパイル」ビルド ステップにリストされている順序で処理されています。ビルド ルールに移動し、.abc をリストの一番上にドラッグするだけです。

私の考古学者バッジへの小さな一歩だと思います。

于 2013-06-18T08:56:59.333 に答える
3

ビルド ルールを追加する代わりに、[ビルド フェーズ] タブで、[ビルド フェーズの追加] ボタンを使用して、[実行スクリプトの追加] を選択します。スクリプト要件を実装できるスクリプト実行フェーズが追加されます。新しい実行スクリプト フェーズは、機能を実行するソース コンパイル フェーズの前にドラッグできます。

于 2011-12-10T16:51:00.353 に答える
0

生成されたファイルとターゲットの間に明示的な依存関係を追加する必要があります。

FinderでDerivedDataディレクトリを開き、mytest.hファイルを選択して、プロジェクト内のXCodeにドラッグします。私は通常、「派生ファイル」と呼ばれる新しいグループを作成し、その下にそのようなファイルを配置します。

DerivedDataディレクトリを簡単に見つけるために、プロジェクト設定を変更して、ディレクトリプロジェクトを相対的なものにします([ファイル]-> [プロジェクト設定]の[ビルド]タブを参照)。

プロジェクトでファイルが参照されたら、それをメインターゲットのコンパイルソースルールに追加する必要があります。プロジェクトのメインターゲットを選択し、コンパイルソースがまだ展開されていない場合は展開し、コンパイルするファイルのリストに新しく追加された派生ファイルをドラッグします。

最後に、このファイルを本当にコンパイルしたいので、名前を.hではなく.mまたは.cに変更することをお勧めします。

更新:実際には、上記が常に機能しているわけではないようです。最も信頼できる方法は、ビルドルールの代わりにビルドフェーズを使用することです。

于 2012-05-29T00:03:56.477 に答える