Delphi 7 make がファイルが見つからないというメッセージを表示する

StackOverflow https://stackoverflow.com/questions/131516

  •  02-07-2019
  •  | 
  •  

質問

会社の自動ビルド サーバーのメイク ファイルとして使用するために変更した 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.

おそらくこのトリックはパッケージでも機能するでしょう。したことがない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top