以前都是在erlang shell里进行c(),编译文件。今天看了坚强哥的erlang的Emakefile所以尝试了下。
先写一个Emakefile
%% -*- mode: erlang -*- {"src/*", [debug_info, {outdir, "ebin"}, {i, "include"} ]}.启动的时候。我是在windows下运行的、
写个cmd文件。
werl -name [email protected] -pa ebin
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) ([email protected])1> make:all(). Recompile: src/test up_to_date ([email protected])2> test:get_number(). [1,2,3,4,5,6,7,8,9,10]
get_number()-> lists:seq(1,8).此时在运行
([email protected])3> make:all(). Recompile: src/test up_to_date ([email protected])4> test:get_number(). [1,2,3,4,5,6,7,8,9,10]发现还是运行的上次的。但是已经提示我们编译了。这是为什么呢。
后来发现erlang虽然编译了但是没有加载需要加载下。l().加载文件。
([email protected])5> l(test). {module,test} ([email protected])6> test:get_number(). [1,2,3,4,5,6,7,8] ([email protected])7>