如何把Rebar项目迁移到erlang.mk:两大Erlang构建工具对比与兼容性完整清单
如何把Rebar项目迁移到erlang.mk两大Erlang构建工具对比与兼容性完整清单【免费下载链接】erlang.mkA build tool for Erlang that just works.项目地址: https://gitcode.com/gh_mirrors/er/erlang.mkerlang.mk是 Erlang 生态中一款开箱即用的构建工具基于 GNU Make 编写而Rebar是另一个广泛使用的 Erlang 构建工具。很多团队希望把 Rebar 项目迁移到 erlang.mk以获得更统一的依赖管理与更丰富的插件体系。本文通过两大 Erlang 构建工具对比和一份可落地的兼容性清单带你快速完成 Rebar 到 erlang.mk 的迁移双向兼容一次搞定。 一、Rebar 与 erlang.mk 核心差异速览在动手迁移前先理解两款工具的设计差异迁移时才不会水土不服对比维度Rebar2/3erlang.mk配置文件rebar.configErlang 项列表MakefileMake 变量依赖管理锁文件rebar.lock 依赖锁版本DEPS变量 内置包索引约 500 个包依赖存放_build/default/lib/deps/目录插件体系rebar 插件Erlang 编写Make 插件.mk文件如 EUnit、Cover、Dialyzer版本管理方式语义化版本约束dep_应用名_commit直接锁定提交/标签生态定位独立完整工具链强调与其他工具互相兼容官方定位是合群的孩子 关键认知erlang.mk并非要你二选一——它内置了双向兼容机制源码见core/compat.mk既能直接构建 Rebar 项目也能反向生成rebar.config供 Rebar 使用。 二、迁移路径一零成本体验——直接依赖 Rebar 项目如果你只是想让 erlang.mk 项目引用一个 Rebar 写的依赖库完全不用改对方代码。erlang.mk 的Autopatch自动打补丁机制会在拉取依赖时自动检测 Rebar 项目一旦在依赖目录中发现rebar.config或rebar.lock它会临时引入 rebar3 读取配置然后生成一个 erlang.mk 风格的Makefile把 Rebar 项目翻译成 erlang.mk 项目实现细节位于core/deps.mk的dep_autopatch_rebar部分。对你来说只需在 Makefile 里写一行DEPS cowboy dep_cowboy git https://github.com/ninenines/cowboy 2.9.0下次执行make时自动拉取并编译无需安装 Rebar。️ 三、迁移路径二把手头 Rebar 项目正式迁移到 erlang.mk以下是完整的5 步迁移流程适用于把自有项目从 Rebar 切换到 erlang.mk 构建。第 1 步获取 erlang.mk 并初始化项目在仓库根目录加入 erlang.mk 文件建议提交到版本库git clone https://gitcode.com/gh_mirrors/er/erlang.mk erlang.mk-build cp erlang.mk-build/erlang.mk ./官方推荐做法是下载引导版文件后执行make -f erlang.mk bootstrap让它自我补全为完整版本详见doc/src/guide/getting_started.asciidoc。第 2 步编写 Makefile对照模板参考官方项目模板templates/top_Makefile最小化的 Makefile 形如PROJECT my_app PROJECT_VERSION 1.0.0 include erlang.mk项目名必须与目录名、应用名保持一致后续 release 等功能依赖这一点。第 3 步对照清单转换 rebar.config兼容性清单⭐这是迁移的核心环节。下面这份rebar.config → Makefile 变量对照清单覆盖了绝大多数场景rebar.config 配置erlang.mk 等价写法说明{deps, [{app, 1.0}]}DEPS appdep_app_commit 1.0依赖声明与版本锁定Hex 包依赖{app, 2.1}dep_app hex 2.1支持从 Hex 仓库拉取{erl_opts, [debug_info, warn_unused_vars]}ERLC_OPTS debug_info warn_unused_vars编译选项逐个平迁仅构建期依赖BUILD_DEPS erlando如 parse transform 类库仅测试依赖TEST_DEPS ct_helper运行时依赖之外的隔离OTP 自带应用如 cryptoLOCAL_DEPS crypto无需下载c_src/目录 C NIFC_SRC_TYPE rebar由 Autopatch 自动生成cover测试覆盖率直接执行make cover内置插件无需配置rebar3 profiledev/prod用make的不同 target 表达如make release、make tests{relx, [...]}发布配置make relxrelx.config模板见templates/relx.config⚠️ 细节提醒erlang.mk 在转换编译选项时会自动剔除-Werror避免依赖库因警告而编译失败见core/compat.mk的注释说明。第 4 步确认应用资源文件app.srcRebar 家族构建项目需要两个文件rebar.config和应用资源文件。资源文件位于src/$(PROJECT).app.src或ebin/$(PROJECT).app。如果仓库里已有src/my_app.app.src无需任何操作如果没有erlang.mk 每次编译都会在ebin/下生成.app文件把它提交进仓库即可其他构建工具也能识别。第 5 步双向兼容验证 更新 CI执行一次make rebar.configerlang.mk 会读取DEPS和ERLC_OPTS变量反向生成一份rebar.configGit 分支/标签/ref 都能正确识别。这样你的项目同时被两套工具链支持# 让每次构建自动刷新 rebar.config app:: rebar.config迁移完成后记得提交新生成的rebar.config并把 CI 中的rebar compile替换为make、rebar proper替换为make check。erlang.mk 自带的 CI 插件可生成 Travis 等平台的配置参考plugins/ci.mk。 四、迁移后常见坑与排查清单✅ 迁移完成后对照这份清单逐项验证依赖版本漂移不同构建工具拉取策略不同若某依赖声明了不同版本可能拉取到不同结果。用make query-deps输出完整依赖树核对。cp本地拷贝依赖erlang.mk 特有获取方式如dep_xxx cp 路径Rebar 无法识别这类项目不要指望反向兼容。插件类配置不迁移Rebar 专有插件如自定义 rebar 插件没有直接等价物需改写为 erlang.mk 插件或独立 Make target。验证 Rebar 侧可用性可以用rebar3 compile对生成物做一次交叉验证官方测试套件test/core_compat.mk就是这么做的含依赖分支/标签/Hex 包、编译选项、parse_transform 等多种场景。Windows 用户需在 MSYS2 环境下使用注意文件换行符为 LF详见doc/src/guide/installation.asciidoc。 五、延伸阅读官方兼容性章节doc/src/guide/compat.asciidocRebar 项目互操作权威说明依赖管理详解doc/src/guide/deps.asciidoc获取方式、依赖冲突规则、多应用仓库自动打补丁机制实现core/deps.mkrebar.config 生成实现core/compat.mk兼容性自动化测试test/core_compat.mk新项目脚手架模板templates/top_Makefile、templates/application.app.src✅ 总结把 Rebar 项目迁移到 erlang.mk 并不痛苦依赖型场景零改动Autopatch 自动翻译项目级迁移只需三步——放好 erlang.mk、写一个十几行的 Makefile、按对照清单搬配置。再配合make rebar.config反向生成实现双工具链共存迁移风险降到最低。迁移完成的那天起你就同时拥有了约 500 个包的索引、make shell交互式调试和一套完整的测试插件生态这就是 erlang.mk just works 的底气。【免费下载链接】erlang.mkA build tool for Erlang that just works.项目地址: https://gitcode.com/gh_mirrors/er/erlang.mk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Photoshop 纹理压缩教程:用 Intel Texture Works 三步导出 BCn 压缩 DDS

Photoshop 纹理压缩教程:用 Intel Texture Works 三步导出 BCn 压缩 DDS

Photoshop 纹理压缩教程:用 Intel Texture Works 三步导出 BCn 压缩 DDS 【免费下载链接】Intel-Texture-Works-Plugin Intel has extended Photoshop* to take advantage of the latest image compression methods (BCn/DXT) via plugin. The purpose of this plug…

2026/8/22 16:01:28 阅读更多 →
乙草胺农药残留胶体金快速检测卡快速筛查果蔬农药残留

乙草胺农药残留胶体金快速检测卡快速筛查果蔬农药残留

1. 产品简介乙草胺是一种广泛使用的酰胺类选择性除草剂,主要用于玉米、大豆、花生等作物田防除一年生禾本科杂草。由于其使用量大、残留期较长,乙草胺在农产品和环境中残留问题日益受到关注。乙草胺农药残留胶体金快速检测卡是一种基于免疫层析技术的快速…

2026/8/22 16:00:28 阅读更多 →
精装智能成本可控的关键:AIoT 技术方案实战对比

精装智能成本可控的关键:AIoT 技术方案实战对比

2026年3月,参考上海市装饰装修行业协会发布的《2024上海家装行业白皮书》中关于住宅智能化配置的调研数据,以及克而瑞地产研究发布的《2025中国精装地产智能化趋势报告》显示,当前刚需盘精装智能配置渗透率已突破62%,但房企对智能…

2026/8/22 16:00:28 阅读更多 →

最新新闻

泰克2465B模拟示波器实战指南:选购、验机与精度验证

泰克2465B模拟示波器实战指南:选购、验机与精度验证

1. 背景与核心概念:模拟示波器的价值与泰克2465系列在数字示波器(DSO)大行其道的今天,为何仍有大量工程师、爱好者和收藏家对泰克(Tektronix)的2465B、2466B这类模拟示波器情有独钟?这并非简单的…

2026/8/22 21:30:36 阅读更多 →
GriddyCode Godot 代码编辑器完整指南:Lua 插件与主题定制

GriddyCode Godot 代码编辑器完整指南:Lua 插件与主题定制

GriddyCode Godot 代码编辑器完整指南:Lua 插件与主题定制 【免费下载链接】griddycode A code editor made with Godot. Code has never been more lit! 项目地址: https://gitcode.com/GitHub_Trending/gr/griddycode GriddyCode 是一个基于 Godot 引擎构建…

2026/8/22 21:30:36 阅读更多 →
Roboto 字体 10 分钟上手:从选文件到源码构建的完整做法

Roboto 字体 10 分钟上手:从选文件到源码构建的完整做法

Roboto 字体 10 分钟上手:从选文件到源码构建的完整做法 【免费下载链接】roboto The Roboto family of fonts 项目地址: https://gitcode.com/gh_mirrors/ro/roboto Roboto 字体是 Google 出品的开源无衬线字体家族,Android 和 Chrome OS 的系统…

2026/8/22 21:30:36 阅读更多 →
技术创业者如何高效利用学术论文:从AI顶会中萃取产品洞察

技术创业者如何高效利用学术论文:从AI顶会中萃取产品洞察

最近和几个技术出身的创业者聊天,发现一个挺有意思的现象:大家普遍觉得,自从开始创业,好像就和“学术”这件事彻底绝缘了。每天被产品、融资、团队、客户追着跑,谁还有空去翻最新的顶会论文?那些复杂的公式…

2026/8/22 21:30:36 阅读更多 →
泰克2465B模拟示波器实战指南:从验机到高级应用

泰克2465B模拟示波器实战指南:从验机到高级应用

1. 背景与核心概念:模拟示波器的“末代皇帝”在数字示波器(DSO)大行其道的今天,为何仍有大量工程师、爱好者和收藏家对一台诞生于上世纪80年代的模拟示波器——泰克Tektronix 2465B/2466B——津津乐道,甚至不惜重金淘换…

2026/8/22 21:30:36 阅读更多 →
TCP四次挥手详解:为什么不能是三次?从状态机到数据完整性

TCP四次挥手详解:为什么不能是三次?从状态机到数据完整性

这类面试题最怕的就是只背答案,不理解背后的状态变化和设计逻辑。TCP 挥手为什么不能是三次?核心原因在于 TCP连接是全双工的,并且需要保证双方都确认数据发送完毕并准备好关闭 。简单背“四次挥手”没用,你得能讲清楚从 ESTAB…

2026/8/22 21:29:36 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/22 18:08:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →