Erlangプログラムのビルドには、OSコマンドラインから普通のmakeコマンドを使うことが多いようですが、Erlangシェルから使えるmakeもあります。プログラムの構成が簡単なら、Erlangシェルからのmakeが便利なので紹介します。
一番簡単な使い方
カレントディレクトリにいくつかのErlangソース(モジュール;.erlファイル)があり、コンパイル結果(.beamファイル)を同じディレクトリに置くときは、
で、.beamファイルを最新にしてくれます。
> make:all().
コンパイルは実行しないで、単に再コンパイルすべきモジュールを知りたいだけなら、
とすると、
> 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").