如何把Rebar项目迁移到erlang.mk:两大Erlang构建工具对比与兼容性完整清单

发布时间:2026/8/22 16:01:48

如何把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

2026/8/22 16:01:48

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…

external-snapshotter快照删除策略详解:Delete还是Retain?一文避免存储资源泄漏

external-snapshotter快照删除策略详解:Delete还是Retain?一文避免存储资源泄漏

2026/8/22 16:01:48

external-snapshotter快照删除策略详解:Delete还是Retain?一文避免存储资源泄漏 【免费下载链接】external-snapshotter Sidecar container that watches Kubernetes Snapshot CRD objects and triggers CreateSnapshot/DeleteSnapshot against a CSI en…

FinalBurn Neo 街机模拟器完整指南:构建配置与核心功能实操

FinalBurn Neo 街机模拟器完整指南:构建配置与核心功能实操

2026/8/22 16:01:48

FinalBurn Neo 街机模拟器完整指南:构建配置与核心功能实操 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo FinalBurn Neo(FBNeo)是一个多系统街机与家用机模拟器&am…

数学建模实战:从跳台跳水体型校正问题解析工程思维与模型构建

数学建模实战:从跳台跳水体型校正问题解析工程思维与模型构建

2026/8/22 17:01:51

1. 项目概述:从一道赛题到一套方法论那年打开“华为杯”赛题包,看到A题《跳台跳水体型校正系数的建模分析》时,我第一反应是这题出得真“刁钻”。它巧妙地把一个大众熟悉的体育项目,包装成了一个典型的、开放性的工业级数学建模问…

ChinaJoy技术观察:从游戏展到数字内容产业技术生态接口

ChinaJoy技术观察:从游戏展到数字内容产业技术生态接口

2026/8/22 17:01:51

最近在整理行业观察时,一个反复被提及的问题引起了我的思考:当我们在谈论ChinaJoy时,我们究竟在谈论什么?是那个曾经以游戏试玩、ShowGirl和硬件外设为核心的“游戏展”吗?经过对近期行业动态的梳理,特别是…

Python项目结构分析:用Contextor策略优化LLM代码理解与成本控制

Python项目结构分析:用Contextor策略优化LLM代码理解与成本控制

2026/8/22 17:01:51

你是否曾遇到过这样的场景:当你试图让一个大型语言模型(LLM)去理解一个中等规模的 Python 项目时,它要么因为上下文长度限制而“失忆”,要么为了处理整个代码库而消耗掉天价的 tokens,让成本瞬间飙升&#…

MolQuest基准:评估AI化学家在结构解析中的溯因推理能力

MolQuest基准:评估AI化学家在结构解析中的溯因推理能力

2026/8/22 17:01:51

1. 项目概述:当AI化学家遇上“福尔摩斯式”推理最近在化学信息学和AI交叉领域,一个名为MolQuest的基准测试(Benchmark)引起了不小的讨论。简单来说,它试图回答一个核心问题:我们该如何系统、客观地评估一个…

Linux服务器CPU使用率飙升排查:从工具链到火焰图的完整实战指南

Linux服务器CPU使用率飙升排查:从工具链到火焰图的完整实战指南

2026/8/22 17:01:51

1. 从一次深夜告警说起:CPU使用率飙升的现场 凌晨两点,手机突然开始震动,屏幕上弹出一条告警信息:“生产服务器CPU使用率持续超过95%,持续时间超过5分钟”。相信这是很多运维和开发工程师都经历过的“心跳时刻”。在Li…

容度升维方法论(CDEM)操作指南——从理论框架到实践路径

容度升维方法论(CDEM)操作指南——从理论框架到实践路径

2026/8/22 16:51:50

容度升维方法论(CDEM)操作指南——从理论框架到实践路径自指余行论研究中心 | 2026年一、CDEM的操作流程:四步法详解容度升维方法论(CDEM)包含四个标准操作步骤。每一步都有明确的目标、输入、输出和验证标准。第一步&…

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

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

2026/8/21 21:41:19

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

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/22 11:09:22

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

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/22 11:09:22

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

多尺度智能体控制:从宏观密度场到微观决策的架构与实践

多尺度智能体控制:从宏观密度场到微观决策的架构与实践

2026/8/22 0:00:52

1. 从宏观到微观:多尺度智能体控制的核心挑战在智能体(Agent)技术日益普及的今天,我们面临着一个越来越普遍的难题:如何同时管理成千上万个,甚至百万级别的智能体?无论是城市交通中的自动驾驶车…

CUBE标准:统一AI智能体评测的度量衡与架构解析

CUBE标准:统一AI智能体评测的度量衡与架构解析

2026/8/22 0:00:52

1. 项目概述:为什么我们需要一个统一的智能体评测标准?最近在折腾各种AI智能体项目,从简单的自动化脚本到复杂的多模态交互系统,我发现了一个让人头疼的共性问题:评测。每次开发完一个智能体,想看看它到底行…

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

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

2026/8/22 0:00:52

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

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…