C++ Builder 6 が常にすべてのファイルをコンパイルするのはなぜですか?
1 つのファイルにいくつかの変更を加えましたが、BCB 6 はアプリを起動するとすべてのファイルをコンパイルします。何か案が?Windows XP SP2 を使用しています。
C++ Builder 6 が常にすべてのファイルをコンパイルするのはなぜですか?
1 つのファイルにいくつかの変更を加えましたが、BCB 6 はアプリを起動するとすべてのファイルをコンパイルします。何か案が?Windows XP SP2 を使用しています。
すべてまたは多くのファイルを特定のモジュールに依存させましたか?
特定のモジュールに依存するファイルは、モジュール クラス構造 (.h ファイルに含まれる) が変更されるたびに再構築されます。たとえば、他の多くのモジュールからアクセスされるデータ モジュールがある場合、データ モジュールのクラス構造が変更されるたびに、すべての依存モジュールが再構築されます。
ソース ファイルとバイナリ オブジェクトは同じマシン上にありますか? そうでない場合は、ネットワーク時刻の同期に問題があるようです。
ヘッダー ファイルの問題である可能性が最も高い場合は、コンパイラ インクルード ファイルが将来のある時点で変更された日付を持っているか、アプリケーションが、COM インポートなどのコンパイル中に変更されるヘッダー ファイルに依存しています。
編集: VS には常に再コンパイルするフラグが設定されていることを確認してください。これは、設定してから設定解除すると、BCB にも当てはまる可能性があります。もう 1 つの可能性は、プリコンパイル済みヘッダーが、すべてのソース ファイルで生成されるように誤って構成されていることです。
より正確な答えを出すために、私はBCB 6に精通していません。
Borland には、再コンパイルされるコード行数を制御するプラグマがあります。
過去数年間、私は(いくつかのプロジェクトで)自分のソースの変更のみがコンパイルされるように管理してきました。これがボーランドの新しいバージョンで機能するかどうかはわかりません
Borland 6 にはプラグマ「hdrstop」があります。これは、プロジェクト オプション「Pre-Compile headers」が「none」でない場合にのみアクティブになります。
数年前、私は非常に遅いコンピューターを使用していましたが、次のトリックでコンパイル時間を数時間から数分に短縮しました
すべての cpps がこの最初の行になりました
#include "all.h"
#pragma hdrstop
デフォルトは「vcl.h」のインクルードでした
「all.h」には、必要なすべてのヘッダーが含まれます。ユニット。すべてのユニットは、 pragma hdrstop の前のヘッダーに依存するすべてのソースをスキップします。
例:
Unit1.h
#include <string>
Unit1.cpp
#include "all.h"
#pragma hdrstop
#include "Unit1.h"
Unit2.h
#include <vcl>
Unit2.cpp
#include "all.h"
#pragma hdrstop
#include "Unit2.h"
all.h
#include <string>
#include <vcl>
Unit1.h
#include <string>
Unit1.cpp
#include "all.h"
#pragma hdrstop
#include "Unit1.h"
Unit2.h
#include <vcl>
Unit2.cpp
#include <vcl> //!!!!!!!!!!!!!!!!!!! produce a second version of an precompiled file
#pragma hdrstop
#include "Unit2.h"
all.h
#include <string>
#include <vcl>
BCB コンパイラ用のこのプラグインを試してください: Bcc32Pch IDE プラグイン
必要な場合を除き、「build」コマンドではなく「make」コマンドを使用していることを確認してください。
Borland ツールを使用してプロジェクトを作成すると、常にその問題が発生するように思われます。つまり、どのツールが変更されたかに必ずしも気付かず、すべてをコンパイルし始めるという問題です。
Pre-Compiled Headers オプションを確認すると、処理速度が向上する可能性があります。
Borland/CodeGear が C++Builder 2007 以降で MSBuild システムに切り替えたとき、コンパイルははるかに高速になり、より効率的になりました。