高見知英の技術ログ

技術関係のログをQiitaから移行してきました。プログラミングのほか、使っているアプリの細かい仕様についてなど書いていきます。

Lazarusプロジェクトのビルドをコマンドラインで行なう

このブログはLazarus(FreePascal)アドベントカレンダー14日目の記事です。

qiita.com

たとえばリリースパッケージを作りたいときなど、Lazarusのコンパイル以外にも複数の処理を行ないたいのでIDE以外からコンパイル操作を行いたい ということはときどきあります。

そのようなときに、Lazarusのビルド処理だけを行なうツールとして、Lazarusにはlazbuildというツールが存在します。

Lazbuildの在処と使い方

このツールは、Lazarusをインストールしたディレクトリにあります。

このツールに、Lazarusのプロジェクトファイル(*.lpi)を指定すると、コンパイル処理が走って、ファイルで定義した場所に実行ファイルが出力されます。

このパスをヒント無しで探したい場合…。レジストリのインストール時情報にパスに書き込まれているので、そこから読み取るくらいでしょうか・・・*1

LazBuildでいつもと違う構築モードのコンパイルを行なう

このlazbuildには、--build-modeというオプションがあり、これを指定すれば、構築モードを切り替えてのコンパイルも可能。

たとえば普段のコンパイルでは構築モード「Debug」を使っているが、このときは「Release」を使いたい という場合はlazbuild .\application.lpi --build-mode=Releaseなどというコードを書いておけばOKです。

なお、この処理を行なうと*.lpsファイルが書き換えられてアクティブな構築モードが「Release」に変わってしまうので、それが気になる場合は、--no-write-projectオプションを加えます。

ビルドスクリプトを書く

また、同梱物がほかにもある場合は、コンパイル用のスクリプトを作っておくと良いです。

ZIPファイルにまとめる場合など、PowerShellを使っても良いですが、Pythonあたりで作って置くとバンバン呼び出せて良いですね。

lpiファイルはXMLファイルなので、Pythonからいじりたい場合はxml.etree.ElementTreeあたりを使うとよいでしょう。

ただし、xml.etree.ElementTree#writeで作成できるXMLはLazarusが出力するlpiファイルとは若干書式が異なるのでご注意ください*2

github.com

*1:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\lazarus_is1\InstallLocation

*2:わたしはXMLファイルを作成したあと、ファイルを読み込んで直接編集しました