Delphi 7 make がファイルが見つからないというメッセージを表示する
質問
会社の自動ビルド サーバーのメイク ファイルとして使用するために変更した BPG ファイルがあります。機能させるためには変更する必要がありました
Uses * Uses unit1 in 'unit1.pas' * unit1 unit2 in 'unit2.pas' * unit2 ... * ...
コンパイラがunit1.pasが見つからないといううやむやを与えずに動作させるために、DPRファイルに記述します。これは面倒です。プロジェクト内の内容を実際に確認するために BPG ファイルを使用したいのですが、新しいユニットを追加するたびに、「unitx.pas」内のユニットが DPR ファイルに自動的に取り込まれてしまうからです。
私は走っています make -f [then some options]
, 、コンパイルしている DPR はメイク ファイルと同じディレクトリにありませんが、これが重要かどうかはわかりません。次の条件を満たす限り、すべて正常にコンパイルされます。 in 'unit1.pas
が削除されます。
解決
これは、IDE の検索パスとコマンド ライン コンパイラの検索パスが同じではないことが原因である可能性があります。コマンド ライン コンパイラの検索パスを変更すると、IDE 内とまったく同じソース コードを使用できる可能性があります。
コマンドライン コンパイラの検索パスを構成する 1 つの方法は、dcc32.cfg というファイルで行うことです。ヘルプを参照してください。IDE ヘルプに dcc32.cfg の簡単な説明があります。
他のヒント
さて、この回避策は私にとってはうまくいきました。
//{$define PACKAGE} {$ifdef PACKAGE} uses unit1 in 'unit1.pas' unit2 in 'unit2.pas' ... {$else} uses unit1 unit2 ... {$endif}
唯一の問題は、新しいユニットを追加するたびに、delphi がユニットを消去してしまうことです。 ifdef package
頂点で。
プロジェクト ファイルに条件文を入れる必要があるときは、毎回次のようにします。
program a;
uses
ACondUnits;
...
unit ACondUnits;
interface
uses
{$IFDEF UseD7MM}
Delphi7MM;
{$ELSE}
FastMM4;
{$ENDIF}
implementation
end.
おそらくこのトリックはパッケージでも機能するでしょう。したことがない。