1.Emakefile

   erlang里的make模块提供了类似UNIX中make命令的功能,官方参数文档: http://www.erlang.org/doc/man/make.html
   make.erl模块中提供all/0、all/1、files/1、files/2方法进行编译,也可以使用erlang启动参数-make进行编译(erl -make)。进入make.erl函数中可以看到,执行all方法时,会先判断当前路径是否存在Emakefile文件,如果不存在,则编译当前路径下的所有.erl文件;否则按Emakefile文件中的规则进行编译。编译条件是生成的beam文件的最后修改时间小于源文件的最后修改时间,所以即使你仅仅对项目中的.erl或.hrl中按了ctrl+s而并未做任何修改,下次编译时依然会看到该文件在编译列表中,因为文件的最近修改时间已经被更新了。

   Emakefile的格式应该类似于:

  Modules.
  {Modules,Options}.

下面有一个项目中的示例文件:

  {
    [
      'src/*',
      'src/*/*',
      'src/*/*/*',
      'src/*/*/*/*'
    ]
    ,[
      encrypt_debug_info,
      {i, "include"},
      {outdir, "ebin"}
    ]
  }.

当然你也可以写成:

  {
    [
      'src/*',
      'src/*/*'
    ]
    ,[
      encrypt_debug_info,
      {i, "include"},
      {outdir, "ebin"}
    ]
  }.
  {
    [
      'src/*/*/*',
      'src/*/*/*/*'
    ]
    ,[
      encrypt_debug_info,
      {i, "include"},
      {outdir, "ebin"}
    ]
  }.

或者

  [
    'src/*',
    'src/*/*'
  ].
  {
    [
      'src/*/*/*',
      'src/*/*/*/*'
    ]
    ,[
      encrypt_debug_info,
      {i, "include"},
      {outdir, "ebin"}
    ]
  }.

摘自官网文档,这里Modules里的含义包括:

  a module name, e.g. file1
  a module name in another directory, e.g. ../foo/file3
  a set of modules specified with a wildcards, e.g. 'file*'
  a wildcard indicating all modules in current directory, i.e. '*'
  a list of any of the above, e.g. ['file*','../foo/file3','File4']

i代表.hrl头文件的目录,outdir代表编译成功后的二进制beam文件的输出目录。encrypt_debug_info是代码编译加密用的参数,既保留debug_info又防止他人通过beam_lib模块进行代码反编译,需要配置.erlang.crypt文件使用,如果不保留debug_info也可以不保留该参数,官方文档可参考: http://www.erlang.org/doc/man/beam_lib.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值