`
DiaoCow
  • 浏览: 242682 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Erlang rebar源码学习(二)

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

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



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



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

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



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



  • 大小: 5.9 KB
  • 大小: 22.9 KB
  • 大小: 49.5 KB
分享到:
评论

相关推荐

    使用rebar工具开发erlang工程项目和发布erlang工程项目学习.pdf

    使用 rebar 工具开发 Erlang 工程项目和发布 Erlang 工程项目学习 本文主要介绍了使用 rebar 工具开发 Erlang 工程项目和发布 Erlang 工程项目的方法。rebar 是一个 Erlang 构建工具,可以方便的编译测试 Erlang ...

    erlang 学习笔记1

    在学习过程中,阅读和理解源码有助于深化对Erlang特性的理解。同时,Erlang社区提供了许多工具,如Rebar3和ERTS(Erlang Run-Time System),它们对于构建、测试和部署Erlang应用至关重要。 【压缩包子文件的文件...

    Erlang 运行环境的安装文件

    8. **开发工具**:为了更高效地开发 Erlang 项目,你可以考虑安装集成开发环境(IDE)如 IntelliJ IDEA 的 Erlang 插件,或者使用专门的 Erlang IDEs 如 Rebar3 和 Elixir IDE。 总的来说,安装 Erlang 运行环境是...

    erlang官方资源包

    这可以通过rebar或rebar3这样的构建工具来管理依赖并构建项目。 8. 性能优化:OTP提供了多种工具来监控和优化Erlang应用的性能,如instrument模块可以收集运行时统计信息,erlang:system_info/1函数可以获取系统...

    erlang高级原理和应用PPT

    7. **标准库与第三方库**:Erlang的标准库介绍,如ETS(Erlang Term Storage)和Mnesia数据库,以及常用的第三方库如 Cowboy(Web服务器)和Rebar3(构建工具)。 8. **实战案例**:可能包含一些实际项目或案例研究...

    Erlang应用部署与热代码替换--理解2

    二、Erlang热代码替换 热代码替换是Erlang的一项核心特性,允许在不中断运行服务的情况下更新应用程序代码。它分为三个阶段:停止旧进程、加载新代码和启动新进程。 1. **加载新代码**:使用`code:load_file/1`或`...

    cpp-Cowboy用于ErlangOTP的小型快速现代的HTTP服务器

    同时,由于Erlang的语法简洁,学习曲线相对平缓。 7. **社区支持**: Cowboy有活跃的社区,开发者可以在这里找到解决方案、示例代码和最佳实践。 在实际应用中,Cowboy常与其他Erlang框架(如Phoenix或Rebar3)一起...

    E语言源码目录树演示.zip

    这个“E语言源码目录树演示.zip”文件很可能包含了一个Erlang项目的源代码结构,供学习者或开发者参考。 在Erlang项目中,源码目录树通常遵循一定的组织规则,以保持代码的清晰和可维护性。以下是一般Erlang项目的...

    erlide插件

    7. **文档和帮助**:Erlide还提供了Erlang文档的快速访问,帮助开发者更好地理解和学习Erlang语言及库函数。 8. **代码分析和重构**:Erlide支持基本的代码分析和重构操作,帮助优化代码结构。 **使用Erlide的步骤...

    otp_src_25.0.2.tar.gz

    这些源代码可能包括各种模块、库函数、测试用例、文档等,供开发者学习、扩展或定制Erlang OTP的功能。 Erlang OTP的知识点: 1. **Erlang语言特性**:Erlang是一种基于BEAM虚拟机的并行、分布式、面向进程的语言...

    jinterface-sample:使用JInterface的示例Erlang应用程序

    5. **数据类型转换**:JInterface处理Erlang和Java之间的数据类型转换,例如Erlang的二进制、列表、原子等与Java的对应类型。 6. **Java与Erlang的性能比较**:理解何时应该使用Java,何时应该使用Erlang,以及如何...

    otp_src_23.3.tar.gz

    标题中的"otp_src_23.3.tar.gz"是一个典型的开源软件源代码压缩包,源自Erlang/OTP(开放电信平台)项目。...通过学习和使用这个源代码包,开发者可以深入理解Erlang/OTP的内部工作原理,进而提升开发效率和软件质量。

    杭州ecug会议上的演讲稿

    标题“杭州ecug会议上的演讲稿”提示我们这是一篇在杭州举行的ECUG(Erlang Community User Group)会议上的演讲材料,...对于想要深入学习Erlang或对Erlang优化感兴趣的开发者来说,这份演讲稿无疑是一个宝贵的资源。

    otp_src_24.0.tar.gz

    标题中的"otp_src_24.0.tar.gz"是一个源代码压缩包,表明它包含了某个软件...通过学习和研究这个源码,我们可以深入理解Erlang的并发模型、错误处理机制,以及RabbitMQ如何利用这些特性来实现高效稳定的消息队列服务。

    weby:Gleam Lang中的简单Web服务器

    【标题】:Gleam Lang中的简单Web服务器 在编程世界中,构建Web服务器是常见的需求,而Gleam Lang提供了一...通过实践这个项目,你可以深入学习到Gleam的函数式编程思想,以及Erlang在分布式系统和网络编程中的优势。

Global site tag (gtag.js) - Google Analytics