2015-1-11 【erlang】Emakefile的{d,Macro} {d,Macro,Value}的小理解

先来段抄的,来自
http://blog.sina.com.cn/s/blog_96b8a15401012ezu.html

Erlang有个类似Makefile的文件Emakefile负责编译erl程序,
格式是

Erlang代码
  1. {Modules, Options}.

其中Modules是一个atom,或者是一个atom的列表。
这些atom
可以是一个模块名,如file1;
可以是别的目录中的模块名,如../foo/file3;
也可以是通过通配符匹配的一系列模块名,如file*;
还可以是上述atom的列表,如['file*', '../foo/file3', 'File4']。

Options是compiler命令的配置参数,具体参数可以 查看文档
一个Emakefile的例子
Erlang代码
  1. {'src/*',
  2. [debug_info,
  3. {i,"include"},
  4. {outdir,"ebin"}
  5. ]}.

shell命令
Shell代码
  1. erl -make
将寻找当前目录下的Emakefile文件,然后根据文件内容build,例如上述例子将当前src目录中的所有模块进行编译,程序中-include 或者 -include_dir指定的相关文件将在include目录中查找,编译好的beam文件输出到ebin目录下。

make时将查看输出目录下有没有相关的编译文件,如果没有则进行编译;
如果有则检查文件时间,比较后决定是否要进一步编译;
如果是最新修改的源文件,则进行编译。

ps:
在erl shell中输入命令
Erlang shell代码
  1. make :all().
有同样的功效。如果加上load参数,
Erlang shell代码
  1. make:all([load]).
1.然后学习一些源码时,发现某个Emakefile中的Options列表中出现了{d,Macro}, {d,Macro,Value}的使用
问题来源:


查看compiler-4.8.2 文档关于Options的参数说明,如下:
{d,Macro}
{d,Macro,Value}
Defines a macro Macro to have the value Value. Macro is of type atom, and Value can be any term. The
default Value is true.
翻译:
选项{d,Macro}或者{d,Macro,Value} 
定义一个名为Macro的宏,对应的值为Value.
Macro呢,是一个原子类型,然后呢,Value,可以为任何erlang中的项式。Value的默认值为true(那么,上面中的
{d,Macro}等价于{d,Macro,true} 
那么
总结下就是,
1.在Emakefile的{Modules, Options} 的Options的列表中,出现{d,Debug}等价与 {debug,Debug,true},即定义了一个全局的宏,等价于-define Debug true。然后全部源码都可以用Debug这个宏了
2.erlang中如何使用Emakefile,需要查阅compiler-4.8.2(自己目前在用R15B版本) 中的compile:file/1,2以及查阅 tools-2.6.8中关于erl的-make选项的相关内容 
3.有待补充





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值