3

IDE: Delphi 6 プロフェッショナル。

大きなプロジェクトがあります。

プロジェクト グループを使用してすべてをビルドすることはできません。OM エラーが発生し、実行時に奇妙なファイル エラーが発生したためです。

私の考えは、DCC32.exeを使用することでした。以前は、コマンドラインパラメーター(dcc32.cfg)との戦いがありましたが、解決したと思っていました...

今日、それを使ってプロジェクトをコンパイルしようとしましたが、最初のプロジェクトでエラーが発生しました。

chdir c:\d\anyproject dcc32 -b any.dpr

エラーは、ユニットが見つからないことを報告しました。Delphi でコンパイルしようとしましたが、成功しました。

というわけで、問題を確認しました。以前のプロジェクトの建物が成功した理由と、失敗した理由は…?

次に、この dpr がサブディレクトリへの参照を使用していることに気付きましたが、プロジェクトに追加されたすべてのファイルではなく、プロジェクトの「検索パス」によってさらに多くのファイルがリンクされています。

しかし、それが本当なら、これは DCC32 がプロジェクトの DOF/CFG ファイルを使用していないことを意味します!

問題は、Delphi がすべてをマージして結果を提供することです。グローバル検索パス、プロジェクトのコンパイラ ディレクティブ、検索パスなどすべてをマージし、プロジェクトの条件付きディレクティブも使用します。

私がそれをよく理解していれば、DCC32 は使用せず、dcc32.cfg のみを使用し、コンパイルのためにすべてをマージする必要があります。プロジェクトのパラメーターを解釈してマージするパーサーを作成する必要があるため、これは不可能な仕事です。グローバルと。

それとも、私が何かを誤解していて、その問題は私が見逃した別のことが原因なのですか?

あなたの提案を待っています!

すべてのアイデア、リンク、情報などに感謝します。

4

3 に答える 3

11

次の場所からの dcc32 オプション:

  1. dcc32.cfg ファイル。これは、現在のディレクトリ、または dcc32.exe と同じディレクトリのいずれかです。
  2. コマンドライン。
  3. ソースコード。

これらを優先順位の高い順に並べました。そのため、ソース コードで指定されたオプションは、dcc32.cfg ファイルまたはコマンド ラインで行われた設定よりも常に優先されます。

dcc32.exe は、最初に見つかった dcc32.cfg ファイルを選択します。最初に現在のディレクトリを検索します。

これが意味することは、.dof ファイルから、および IDE からコマンド ライン コンパイル環境に設定を取得する責任があるということです。

これは、アップグレードする必要がある多くの理由の 1 つです。最新の Delphi バージョンでは、コマンド ライン コンパイルに msbuild を使用しており、コマンド ライン ビルドが IDE ビルドと同じであることを簡単に確認できます。

進行中の msbuild を見ると、コマンド ラインで指定されたすべてのオプションを使用して dcc32.exe が呼び出されることがわかります。プロジェクト設定を dcc32.exe の呼び出しに変換することが、現在直面していることです。Delphi 6 では、自分で行う必要があります。最新の Delphi では、ツールは製品の一部です。

于 2012-11-09T12:15:30.337 に答える
1

これは役立つかもしれません:

http://delphi.wikia.com/wiki/Compile_from_Commandline

Delphi 1 から XE3 までの Delphi バージョンでコマンドライン コンパイルを行う方法について説明し、役立つツール dof2cfg へのリンクも示します。

于 2012-11-09T20:09:32.293 に答える
0

IIRC コマンド ライン コンパイラは、現在のフォルダーまたは dcc32.exe が存在する場所にある dcc32.cfg という名前の構成ファイルを常に使用します。.cfg ファイルの名前を変更するか、dcc32.cfg にコピーして、問題が解決するかどうかを確認してください。

于 2012-11-09T12:15:07.127 に答える