この記事は、 Delphi Advent Calendar 2012 の2日目のものです。
Delphiで作成したプログラムをビルドする場合、IDEから行うのが一般的だと思いますが、今回は私がよく使っているMakefile(makeコマンド)でビルドする手順を紹介します。
DelphiXE3で試しました。
makeについて
makeについては、WikipediaのページやGNU makeマニュアルの日本語訳のページが参考になります。
make - Wikipedia
GNU make 日本語訳(Coop編) - 目次
DelphiやC++Builder、RAD Studioをインストールすると、Embarcadero製のmakeコマンドが一緒にインストールされています。
コマンドプロンプトでmakeコマンドを実行できるか確認してみてください(Pathは設定されているはず)。
> make -? MAKE Version 5.4 Copyright (c) 1987, 2010 Embarcadero Technologies, Inc. (省略)
今回はEmbarcaderoのmakeを使用します。
ただし、GNUのmakeとは同じものではないので、機能に違いがあることに注意してください。
makeコマンドはコマンドプロンプト(コンソール)から使用します。実行すると、カレントディレクトリのMakefileという名前のファイルに記述されたコマンドを実行します。
Makefileの書式は以下のようになります。
ターゲット: 依存ファイルなど コマンド1 コマンド2 ...
ターゲットは、makeコマンド実行時に指定します。指定しない場合は、1つ目のターゲットが実行されます。
依存ファイルは、ターゲットを実行するために必要なファイルです。ここにはターゲットを指定します。依存が無ければ何も指定しなくていいです。
ターゲットの次の行以降はそのターゲット内で実行するコマンドを1行ずつ順番に記述します。コマンド行の先頭はタブ文字(\t, 半角スペースは不可)を指定する必要があります。
プログラムを用意する
まずは、ビルド対象のDelphiのソースコードを用意します。今回は「Hello, World!」という文字列を画面に出力するだけのコンソールアプリケーションを使います。hello.dprという名前でファイルを作成します。
hello.dpr
program hello; {$APPTYPE CONSOLE} begin Writeln('Hello, World!'); end.
コマンドプロンプト(コンソール)からのコンパイル
Delphiのソースファイル(dpr, pas)をコンパイルするコマンドはWin32の場合はdcc32、Win64の場合はdcc64、MacOSXの場合は、dccosxになります。
単純にdprファイルをコンパイルして、Win32のexeファイルを作成するには、以下のコマンドを実行します。
> dcc32 hello.dpr
Makefileの作成
ではビルドするためのMakefileを作成します。
Makefileにhello.dprをコンパイルするコマンドをwin32というターゲットで記述します。
おわりに
こんな感じで、単純なものであればMakefileでのビルドは簡単です。
ただし、IDEでのビルド設定などは使えないため、コンパイル時のオプション指定などは、自分で記述する必要があります。
ま、ぶっちゃけ今のDelphiのdprojファイルはMSBuild形式なので、コマンドラインからビルドしたければそちらを使うのがおすすめです。
ちなみにMSBuildの場合はIDEから作成したプロジェクトのdprojファイルを指定するだけです。
> MSBuild hello.dproj
MSBuild.exeは C:\Windows\Microsoft.NET\Framework\v3.5 にあります。(スタートメニューのRAD Studio Command Promptからプロンプトを起動すればパスが通った状態になる)
Delphiのアドベントカレンダーは人数が少ないので、あと何回か記事を書くかもしれない。