Erlang rebar源码学习(二)

之前说了rebar编译的核心部分(rebar_base_compile:run/4方法),现在我们就完整的看下Erlang编译流程( 不准备细致的分析每一行代码,只罗列其中较为重要的部分

编译的入口方法是: rebar_erlc_compiler:compile/2



其中doterl_compile负责编译我们写的Erlang源代码文件,我们来看下它的相关代码

Erlang rebar源码学习(二)_第1张图片

注意观察第208行代码,这就是我们上一节说的核心编译部分(串行编译和并行编译),其中:
fun(S, C) ->
      internal_erl_compile(C, S, OutDir1, ErlOpts)
end

用来做为run方法的第四个参数:CompileFn,我们看下它究竟做了些什么:

Erlang rebar源码学习(二)_第2张图片

简单来说,只有 当源文件最后修改时间 > 之前生成的目标文件(*.beam)才会重新编译,其余情况都会跳过编译



你可能感兴趣的:(erlang,rebar)