1

私はDelphi EcoSystem全体に非常に慣れていません。Rad Studio XE2 を使用しています。

非常に単純なケースがあるとしましょう。

プロジェクト A、B、および C。C は B に依存しています。B は A に依存しています。

これは、'Project Dependencies' IDE GUI を使用して依存関係をセットアップした方法でもあります。

C は、実行可能ファイルを生成するプロジェクトです。「現在のプロジェクト」として設定されます。

プロジェクト B のファイルを変更して F5 (実行) を押すと、プロジェクト B と C のみがコンパイルされると予想されます。

しかし、プロジェクトAは常に再構築されます!! これは、プロジェクト C でソース ファイルを変更した場合にも当てはまります。

私は何か間違ったことをしていますか?もしそうなら、それが何であるかについてのアイデアはありますか?

それとも、これが IDE の仕組みなのですか?

顧客は大規模なレガシー コードベースを所有しており、XE2 を使用しています。現時点では、再コンパイルが必要な最下位のプロジェクトを右クリックし、[Build From Here...] を選択して、依存プロジェクトの再コンパイルを手動で処理しています。

XE2 の「プロジェクトの依存関係」機能を発見したとき、これがこの問題の解決策になると思いました。

* 編集 *

Ok。私の質問/懸念が実際には伝わっていないことがわかったので、これをもう少し詳しく説明しようと思います。

多くの BPL プロジェクト (私が理解している限り、DLL を出力する) と 1 つの実行可能プロジェクト (C.exe) で構成されるグループ プロジェクトがあります。

C.exe は、A.BPL および B.BPL を含むすべての BPL プロジェクトを参照します。ここで、BPL プロジェクトのいずれかのコードを変更して「実行」を実行すると、C.exe が起動しますが、BPL プロジェクトが再コンパイルされていないため、行った変更は有効になりません。これは実際に私の痛みのポイントです。これまでに使用したすべての IDE は、依存する dll も再コンパイルします。もちろん、プロジェクトが適切にセットアップされていることを前提としています。そして今、私の質問に。プロジェクトが正しく設定されていないだけなのか、それとも IDE の制限なのかはわかりません。変更した BPL プロジェクトを右クリックして [ここからコンパイル] を選択し、[実行] を実行すると、変更が有効になります。ただし、依存関係の再コンパイルを気にせずに実行可能ファイルを実行することに慣れている場合、これを行う必要があるのは非常に面倒です。

上記のように、IDE の「依存関係」機能を使用してみました。ただし、動作は非常に奇妙です(私にとって)。ソースコードが変更されていない場合でも、依存関係を再コンパイルします。

4

3 に答える 3

4

あなたの期待は間違っています。ドキュメントには次のように記載されています。

プロジェクト > 依存関係

プロジェクト グループ内にプロジェクトの依存関係を作成します。リストから、選択したプロジェクトをビルドする前に、ビルドするプロジェクトを選択します。

表示される動作は意図されたものです。

于 2013-04-04T07:24:32.180 に答える
1

ビルドの依存関係が複雑なプロジェクトの場合、私は多くの場合、単純に外部ビルド スクリプトを作成し、動作することがわかっている順序でビルドします。つまり、純粋に IDE から作業するのではなく、コマンド プロンプトに移動して、build作成したバッチ ファイル (build.cmd) を入力し、以前の DCU をクリーンアップし、msbuild数回実行してすべてをビルドします。私が構築する必要があるもの、そしてそのようにして、繰り返し簡単に構築できる製品を手に入れることができます.

これらのプロジェクトの 1 つで開発する場合、IDE でしばらく作業することがありますが、これらの場合は常にコマンド ライン ビルドに戻ります。

Delphi IDE の依存関係システムは、悲しいハックです。コマンド ライン ビルドは、真の C スタイルの make システムではありません。Delphi が関与する場合は、毎回完全に再ビルドする力ずくのソリューションになります。ただし、これは継続的インテグレーション (サーバー上で実行する場合) が通常行うことであり、別のプロジェクトに取り組んでいる間にそのようなコマンド ライン ビルドを実行できるため、「心配する必要がない」実行可能な方法だと思います。依存関係の問題とビルドオーダーはもうありません」、これが私の根本的な問題です。

于 2013-04-05T03:43:34.430 に答える