刚接触Erlang会按照书上的简单方式去编译代码,这仅适用于简单且少量工程的编译方式。
c(hello).
erlc hello.erl
erl -noshell -s hello start -s init stop
1、Emakefile 的重要参数
一个完整的项目需要让编译自动化,使用make:all/0 仅需要一个简单的模板即可完成自动编译的需求。make:all() 会在当前目录下查找一个名为 Emakefile 的编译配置文件,来指定编译的一些配置设定。
Emakefile模板上图的 [ 'src/*' , 'src/lib/*' ] 指./src和./src/lib 下所有的xx.erl会被拿出来编译。
debug_info 是用来开启Erlang 调试器的配置信息。
{i, " include/xx "} 在编译时,有些模块导入了include下的hrl文件,这时就会去include/xx 目录找相应的hrl文件。不写 {i, " include/xx "}也可能编译能通过,只要你在每个要导入hrl文件的模块上具体到目录就能通过编译,例如-include(xx/YYY.hrl)。不写 {i, " include/xx "}编译时,会默认去include目录找,-include(YYY.hrl) 就会去include目录下搜索。
{d, Macro} 是非常重要的配置信息,官网解释是定义一个Macro的宏,Macro的类型必须是原子,默认值为true, 当然也可以通 {d,Macro,Value} 去设置你想要的值。开发项目时,会有个开发测试版本以及准备上线的发行版本,测试版本需要DEBUG信息以及断言等来让程序更完善,而发行的时候就不需要这些调试信息,这时就可以通过 {d, Macro} 去实现想要的结果。
{outdir, "xx"} 编译成功的beam文件存放的目录,如果没有的话,这些beam文件就会存在当前目录。
2、编译的流程
未完待续···
网友评论