MSBuild スクリプトを使用して一部のレガシー Delphi 5 ビルドを自動化しようとしていますが、エラーのキャプチャに問題があります。MSBuild の受け渡しに問題があると考えて、バッチ ファイルも試してみましたが、ビルドが失敗する (1) はずなのに、まだバック パス (0) を受け取っています。%2 は Delphi へのパス、%3 はプロジェクト名です。
REM delphi_ide_build.bat
@ECHO OFF
"%1 %2\Bin\delphi32.exe" %3.dpr -b
REM BCB5 returns 0 if build succeeds, 1 if build fails
IF ERRORLEVEL 1 GOTO FAIL
IF ERRORLEVEL 0 GOTO PASS
:FAIL
ECHO An Error Occured in Build - Showing Log
ECHO ---------------------------------------
type %3.err
EXIT 1
:PASS
ECHO The Build Passed - Showing Log
ECHO ------------------------------
type %3.err
EXIT 0
オンラインヘルプによると:
エラー レベルは、ビルドが成功した場合は 0 に設定され、ビルドが失敗した場合は 1 に設定されます。
現在、プロジェクトは失敗します (ログ ファイルに表示されます) が、バッチ ファイルは PASS として実行されます。
[致命的なエラー] MyFile.pas(43): ファイルが見つかりません: 'aa.dcu'
これは Delphi 5 のバグですか、それとも何か不足していますか?
delphi32.exe のオプション -B に関する完全な IDE ヘルプ テキスト:
オートビルド。filename オプションとともに使用する必要があります。指定すると、IDE の起動時にプロジェクトまたはプロジェクト グループが自動的にビルドされます。ヒント、エラー、または警告はファイルに保存されます。その後、IDE が終了します。これにより、バッチ ファイルからバッチ モードでビルドを実行することが容易になります。エラー レベルは、ビルドが成功した場合は 0 に設定され、ビルドが失敗した場合は 1 に設定されます。デフォルトでは、出力ファイルは、ファイル拡張子が .err に変更されて指定されたファイル名と同じ名前になります。これは o オプションを使用して上書きできます