又重新开始读了《Programming Erlang》,也就又读到了第六章中的makefile,结合学习中的具体情况,略作了修改如下:
.SUFFIXES: .erl .beam
OUT = ./beam
.erl.beam:
erlc -W $< ; mv $@ ${OUT}
ERL = erl -boot start_clean
MODS = kvs
all: compile
compile: ${MODS:%=%.beam}
# application:
# ${ERL} -s application start ARG1 ARG2
clean:
rm -rf *.beam erl_crash.dump
跟书里有的一点不同是,我把编译之后的文件转移到了beam文件夹里了,所以为此,在“~/.erlang”中也添加了该路径:
path_addz("./beam").
这样,就方便载入自己编写的模块。最后还是要对以上的makefile稍作解释,以便以后忘了可以看看。
.SUFFIX声明要用到的或者将生成的文件的类型;.erl.beam是指.beam依赖于.erl,紧接着下一行一个tab之后的是一段有关于这种生成关系的具体命令,我也就是在这里把beam文件移动到./beam文件夹里的;MODS和OUT都是定义的变量,方便重复使用(虽然这里没有再用到,但是至少看起来很清楚);application这个替换被注释掉了,因为我几乎用不到,但也可能以后会用到,除了编译之外,它还负责运行编译之后的模块函数;clean就是删除当前文件夹下的beam文件。