详解Erlang编译,利用多进程提高编译速度

刚接触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、编译的流程

未完待续···

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容