はじめに
Delphi 2007 以降、ビルド開始時と終了時にビルドイベントを仕込む事ができるようになりました。
C++ Builder にはリンク前ビルドイベントもあります。
困った事に、ここで使えるマクロの説明がドキュメントに存在しないのです。ダイアログの説明に出てるっちゃー出てますが、具体的にどういう値に置換されるのか判らないのです。
See also:
ビルドコマンドのマクロ
殆どが文字列を返すマクロです。唯一の例外が $(SAVE) マクロです。
以下、C:\Projects\BuildTest に Project1 という名前でプロジェクト (VCL フォームアプリケーション) を保存して Delphi 13 Florence でビルドした場合のマクロの値です。
| 名前 | 説明 | 値の例 |
|---|---|---|
| BDS 1 | 環境変数 $(BDS) | <Delphi のインストールフォルダ> |
| Config | プロジェクトのアクティブな構成の名前 | Debug |
| DEFINES | プロジェクトの条件定義 | DEBUG;;FRAMEWORK_VCL |
| DIR 1 | 環境変数 $(DIR) | (環境変数 DIR を自分で定義して使う?) |
| INCLUDEPATH | プロジェクトのインクルードパス | <Delphi のライブラリパス> |
| INPUTDIR | 入力ファイルのディレクトリ | C:\Projects\BuildTest\ |
| INPUTEXT | 入力ファイルの拡張子 | .dproj |
| INPUTFILENAME | 入力ファイルの拡張子付き名前 | Project1.dproj |
| INPUTNAME | 入力ファイルの拡張子なしの名前 | Project1 |
| INPUTPATH | 入力ファイルのフルパス | C:\Projects\BuildTest\Project1.dproj |
| LOCALCOMMAND | プロジェクトマネージャでユーザーから入力されたローカルコマンド | (機能していないのでは?) 2 |
| OUTPUTDIR | 出力ファイルのディレクトリ | .\Win32\Debug\ |
| OUTPUTEXT | 出力ファイルの拡張子 | .exe |
| OUTPUTFILENAME | 出力ファイルの拡張子付き名前 | Project1.exe |
| OUTPUTNAME | 出力ファイルの拡張子なしの名前 | Project1 |
| OUTPUTPATH | 出力ファイルのフルパス | C:\Projects\BuildTest\Win32\Debug\Project1.exe |
| Path 1 | 環境変数 $(Path) | <Delphi の環境変数 Path> |
| Platform | プロジェクトのアクティブなプラットフォームの名前 | Win32 |
| PROJECTDIR | プロジェクトのディレクトリ 3 | C:\Projects\BuildTest |
| PROJECTEXT | プロジェクトファイルの拡張子 | .dproj |
| PROJECTFILENAME | プロジェクトファイルの拡張子付き名前 | Project1.dproj |
| PROJECTNAME | プロジェクトの名前 | Project1 |
| PROJECTPATH | プロジェクトファイルのフルパス | C:\Projects\BuildTest\Project1.dproj |
| SAVE | コンパイル前に入力ファイルをディスクに保存 | (コマンドマクロ。指定した箇所でプロジェクトが保存される) |
| SystemRoot 1 | 環境変数 $(SystemRoot) | <環境変数 SystemRoot> |
| WINDIR 1 | 環境変数 $(WINDIR) | <環境変数 WINDIR> |
echo $(BDS) のようなビルドコマンドを仕込んでおくと、
[メッセージウインドウ] の [出力] タブで置換されたマクロ文字列を確認できます。
複数のビルドコマンドは改行するかセパレータ文字 & で区切って指定します。
連続した & は単一の & に置き換えられます。同じ理由ですが空行も詰められます。
先述のマクロ以外にも $() の中にオペレーティングシステムの環境変数または IDE 定義の環境変数を指定する事が可能です。例えば $(BDSCOMMONDIR) や $(ProductVersion) はリストにありませんが利用可能です。
See also:
おわりに
Delphi XE ではマクロ一覧が空になっていて、使えるマクロが判りません 4。ダブルクリックで挿入する事もできないため、手入力するしかありませんでした。
...それなのに、ドキュメントに載ってないっていう。
See also:
- Delphi prebuild/prelink/postbuild events (The Wiert Corner)
- QC#88748 Pre- and Post-Build Macros Missing (Internet Archive: QualityCentral)



