このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

Erlang実験室:お手軽なビルド方法

Erlangプログラムのビルドには、OSコマンドラインから普通のmakeコマンドを使うことが多いようですが、Erlangシェルから使えるmakeもあります。プログラムの構成が簡単なら、Erlangシェルからのmakeが便利なので紹介します。

一番簡単な使い方

カレントディレクトリにいくつかのErlangソース(モジュール;.erlファイル)があり、コンパイル結果(.beamファイル)を同じディレクトリに置くときは、


> make:all().
で、.beamファイルを最新にしてくれます。

コンパイルは実行しないで、単に再コンパイルすべきモジュールを知りたいだけなら、


> make:all([noexec]).
とすると、Out of date: モジュール名という形式で、再コンパイルすべきモジュール名が列挙されます。

標準的なディレクトリ構成

ある作業ディレクトリを$DEV_TOPとすると、次のようなサブディレクトリ構成にするのが標準的です。


$DEV_TOP
+---- src ←ソース(.erl)ファイル
+---- ebin ←コンパイル済み(.beam)ファイル
+---- include ←ヘッダー(.hrl)ファイル
+---- doc ←文書ファイル

$DEV_TOP/src/ がカレントディレクトリのとき、コンパイルは例えば次のOSコマンドラインで行います。


>erlc -I ../include -o ../ebin -Ddebug +debug_info mymod1.erl mymod2.erl

すべてをErlangシェルから行う

上記の設定で、Erlangシェルからmake経由でコンパイルするには、makeにコンパイルオプションを知らせるために次のようなEmakefileを書きます。


%%
%% Emakefile -- カレントディレクトリに置く。
%%
{'*', % 「すべてのモジュール」を意味するワイルドカード
% 以下にコンパイルオプション
[
{i, "../include"}, % -I ../include
{outdir, "../ebin"},% -o ../ebin
{d, debug}, % -Ddebug
debug_info % +debug_info
]
}.

これで、make:all().で必要なコンパイルが実行されます。

あ、そうそう、../ebinの.beamファイルにアクセスできるように、次のEshellコマンドを実行しておきましょう。


> code:add_patha("../ebin").