一款由中国开发者打造的高性能编译系统,专为嵌入式Linux及复杂软件栈构建而设计
如下特性:
1.任务解析管理器,menuconfig配置,make运行
2.比CMake更快的编译工具,同一Makefile支持Classic/Yocto组合Cross/Native共4种编译;支持指定:O输出,DESTDIR安装,DEPDIR依赖
3.处理软件编译整个过程的脚本:支持网络下载、缓存处理和镜像加速等,支持类似repo作用的代码开发管理和Yocto的发布管理
它以轻量级核心(仅4000行代码)、极简设计和灵活兼容为核心理念,融合传统编译与Yocto模式的优势,提供比Buildroot更强大的功能,同时规避Yocto的复杂性。 - 零门槛上手:无需学习新语言,基于Python/Shell/Makefile脚本实现,配置直观(支持类Linux的menuconfig),比Buildroot/Yocto更易理解。
- 双模式驱动:
- Classic Build:独立构建模式,依赖隔离清晰,支持缓存加速与跨平台部署。
- Yocto Build:深度封装Yocto,提供 make 命令层和图形化配置,简化复杂元数据操作。
- 企业级特性:智能依赖分析、多版本兼容、安全补丁管理,满足工业级开发需求。
对比 CBuild 最大的区别是 Classic Build 引入了 WORKDIR 概念,每个包都在自己的 WORKDIR 下的特定目录下准备依赖、编译、安装,包之间的依赖关系和 sysroot 由自动生成的顶层 Makefile 处理。
1 极致性能与资源优化 - 编译速度快:实测300个软件包构建耗时仅5分钟,重编译仅49秒,速度远超Yocto(节省2/3时间)。
- 低资源占用:输出文件系统体积仅为Yocto的1/4(1.8G vs 7.4G),显著降低存储成本。
- 编译缓存机制:支持本地/远程镜像缓存,重复构建直接复用结果,节省90%以上时间。
2零学习曲线的友好设计 - 无新语言:基于Python/Shell/Makefile,开发者无需学习DSL,开箱即用。
- Kconfig图形化配置:提供类Linux内核的make menuconfig界面,依赖关系可视化,配置直观。
- 中文文档支持:项目提供完整中文文档(README_zh-cn.md),降低本土开发者门槛。
3 灵活兼容双模式 - Classic模式:类似Buildroot的独立构建,每个包在独立WORKDIR中处理,依赖隔离清晰。
- Yocto模式:扩展Yocto的元数据层,封装bitbake命令,提供菜单配置支持,无缝兼容现有生态。
- 混合编译支持:同一Makefile同时支持交叉编译与本地编译,简化多平台开发流程。
4企业级高级特性 - 智能依赖管理:自动生成依赖图(支持强弱依赖/冲突检测),一键生成SVG可视化图表。
- 独立软件包分发:类似AppImage的gen_cpk工具,自动打包运行时依赖,实现跨系统部署。
- 安全合规支持:自动生成许可证清单(HTML),内置CVE补丁管理,满足企业合规需求。
功能组成
编译系统主要由三部分组成: 任务分析处理工具、Makefile 编译模板 (IMake)、网络和缓存处理工具。
任务分析处理工具: 分析所有任务并自动生成总配置 Kconfig 和执行脚本 Makefile
- 所有任务由 Python 脚本 gen_build_chain.py 分析组装
- 自动收集所有任务的规则和参数,通过 make menuconfig 选择是否执行任务和配置任务参数
- 每个任务规则由一条依赖语句声明,支持非常多的依赖规则
- 支持自动生成执行任务的实包和管理任务的虚包的规则
- 支持普通结构(config)、层次结构(menuconfig)、选择结构(choice) 等自动生成
- 支持强依赖(depends on)、弱依赖(if...endif)、条件依赖、强选择(select)、弱选择(imply)、或规则(||) 等自动生成
- 任务是 Makefile 脚本,由 make 执行
- 支持生成任务依赖关系的图片,并有颜色等属性查看任务是否被选中等 gen_depends_image.sh
Makefile 编译模板 (IMake): 比肩 CMake Autotools Meson 等的编译工具,比他们更简洁快速,使用 menuconfig 配置参数,缺点是由于是纯粹 Makefile 实现所以不支持 Windows
- 编译驱动、库、应用的模板,只需填写少数几个变量就可以完成一个超大项目的 Makefile
- 支持编译生成最新的交叉编译工具链 process_machine.sh toolchain/Makefile
- 一个 Makefile 同时支持 Classic Build 模式和 Yocto Build 方式,同时支持本地编译和交叉编译 inc.env.mk
- 一个 Makefile 同时支持生成多个库、可执行文件或驱动
- 支持自动分析头文件作为编译依赖,支持分别指定源文件的 CFLAGS 等
- 支持指定编译输出目录(make O=xxx)、安装目录(make DESTDIR=xxx)、依赖的 sysroot 目录(make DEPDIR=xxx)
- 提供编译静态库、共享库和可执行文件的模板 inc.app.mk,支持 C(*.c) C++(*.cc *.cp *.cxx *.cpp *.CPP *.c++ *.C) 和 汇编(*.S *.s *.asm) 混合编译
- 提供编译驱动的模板 inc.mod.mk,支持 C(*.c) 和 汇编(*.S) 混合编译
- 提供符合 GNUInstallDirs 标准的安装模板 inc.ins.mk
- 提供 Kconfig (menuconfig) 配置参数的模板 inc.conf.mk
- 提供调用原始的 Makefile CMake Autotools Meson 编译的模板 inc.rule.mk
网络和缓存等处理工具(Classic Build): 处理包的下载、打补丁、编译、安装、打包,支持源码镜像和缓存镜像
- 提供方便可靠的补丁机制 exec_patch.sh
- 提供自动拉取网络包工具,支持从 http(支持 md5)、git(支持 branch tag revision)或 svn(支持 revision) 下载包,支持镜像下载 fetch_package.sh
- 提供编译缓存工具,再次编译不需要从代码编译,直接从本地缓存或网络缓存拉取 process_cache.sh
- 提供简洁的组装模板,且支持缓存编译 inc.rule.mk
- 提供可靠的安装脚本和 sysroot 处理脚本 process_sysroot.sh
- 提供丰富的开源软件层,开源包不断增加中
- 提供生成所有包的描述信息的 HTML 文件的脚本 gen_package_infos.py
- 提供生成独立包(打包包含系统依赖)的脚本 gen_cpk_package.py gen_cpk_binary.sh,功能类似 Snap、AppImage或Flatpak
测试用例可以查看 examples_zh-cn.md
性能测试任务分析处理编译架构- Classic Build 组成:
- 应用和驱动的编译脚本都是由 Makefile + DEPS-statement 组成
- 编译链通过 DEPS-statement 定义的依赖关系组装(包级别的依赖)
- DEPS-statement 基本只需要定义依赖,遵循 CBuild 定义的组装规则
- 脚本分析所有包的 DEPS-statement 自动生成所有包的编译链,所有包都是一个一个单独编译,可以单独进入包下敲 make 编译
- 支持 Kconfig 自己管理或托管,托管的 Kconfig 必需放置和 DEPS-statement 语句文件的同目录,无需手动指定父子包含关系,而是由脚本自动分析组装
- Yocto Build 组成:
- 应用和驱动的编译脚本都是由 Makefile + Recipe 组成
- 编译链通过在 Recipe 中定义的 DEPENDS / RDEPENDS 和扩展的 EXTRADEPS 依赖关系组装(包级别的依赖)
- 自定义包的 Recipe 基本只需要定义依赖,遵循 Yocto 定义的组装规则
- 扩展 Yocto 编译,脚本分析所有包的 Recipe 的文件名和自定义包的 Recipe 的 DEPENDS 变量自动生成所有包的编译链
- 扩展 Yocto 编译,支持弱依赖,可通过 make menuconfig 修改 rootfs (增加包、删除包、修改配置等)

链接: https://pan.baidu.com/s/18YR8ZH-_T9pPkzo7txq17A
提取码下载:
|