以前都是在erlang shell里进行c(),编译文件。今天看了坚强哥的erlang的Emakefile所以尝试了下。
先写一个Emakefile
%% -*- mode: erlang -*-
{"src/*", [debug_info,
{outdir, "ebin"},
{i, "include"}
]}.
启动的时候。我是在windows下运行的、
写个cmd文件。
werl -name zhb@127.0.0.1 -pa ebin
首先确定你配置好了环境变量。可以打开命令窗口输入erl 看看是否进入erlang shell界面。
werl是打开erlang shell,加上w是启动erlang shell,我不喜欢在命令窗口敲。
-name 是起节点名字。
-pa 指定beam的目录。
----------------------------------------------------------------------------------------------------------------------------------------------------------
下边看源码
-module(test).
%%% =================================================================
%%% API functions
%%% =================================================================
-export([get_number/0]).
%%% =================================================================
%%% Internal functions
%%% =================================================================
get_number()->
lists:seq(1,10).
</span>
点击cmd文件
Erlang/OTP 18 [erts-7.0] [64-bit] [smp:4:4] [async-threads:10]
Eshell V7.0 (abort with ^G)
(zhb@127.0.0.1)1> make:all().
Recompile: src/test
up_to_date
(zhb@127.0.0.1)2> test:get_number().
[1,2,3,4,5,6,7,8,9,10]
此时,我们将源文件修改
get_number()->
lists:seq(1,8).
此时在运行
(zhb@127.0.0.1)3> make:all().
Recompile: src/test
up_to_date
(zhb@127.0.0.1)4> test:get_number().
[1,2,3,4,5,6,7,8,9,10]
发现还是运行的上次的。但是已经提示我们编译了。这是为什么呢。
后来发现erlang虽然编译了但是没有加载需要加载下。l().加载文件。
(zhb@127.0.0.1)5> l(test).
{module,test}
(zhb@127.0.0.1)6> test:get_number().
[1,2,3,4,5,6,7,8]
(zhb@127.0.0.1)7>
好了。大家玩的高兴。。。。