読者です 読者をやめる 読者になる 読者になる

Delphiのプログラムをmakeでビルドする(Delphi Advent Calendar 2012-12-02)

この記事は、 Delphi Advent Calendar 2012 の2日目のものです。
Delphiで作成したプログラムをビルドする場合、IDEから行うのが一般的だと思いますが、今回は私がよく使っているMakefile(makeコマンド)でビルドする手順を紹介します。
DelphiXE3で試しました。

makeについて

makeについては、WikipediaのページやGNU makeマニュアルの日本語訳のページが参考になります。
make - Wikipedia
GNU make 日本語訳(Coop編) - 目次
DelphiC++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

Win64MacOSXの場合は、dcc32の部分をそれぞれのコマンドに置き換えるだけです。

Makefileの作成

ではビルドするためのMakefileを作成します。
Makefileにhello.dprをコンパイルするコマンドをwin32というターゲットで記述します。

Makefile
win32:
	dcc32 hello.dpr

これだけです。hello.dprとMakefileを同じフォルダに置いて、コマンドプロンプトからそのフォルダに移動してmakeを実行してみましょう。

> make

ビルドできましたか?
次にWin64MacOSX向けにコンパイルするターゲットも追加してみます。

Makefile
win32:
	dcc32 hello.dpr

win64:
	dcc64 hello.dpr

osx:
	dccosx hello.dpr

こうするとMacOSX向けのビルドを行う場合は、以下のようにコマンドを実行します。

> make osx

他にもフォルダを掃除するcleanターゲットやテストを実行するtestターゲットを作っておいたりすると便利ですね。

おわりに

こんな感じで、単純なものであれば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アドベントカレンダーは人数が少ないので、あと何回か記事を書くかもしれない。