build2 快速入门:10 分钟用 buildfile 构建你的第一个 C++ 程序

发布时间:2026/10/9 22:14:14

build2 快速入门:10 分钟用 buildfile 构建你的第一个 C++ 程序 build2 快速入门10 分钟用 buildfile 构建你的第一个 C 程序【免费下载链接】build2build2 build system项目地址: https://gitcode.com/gh_mirrors/bu/build2你是否觉得 C 项目的构建又繁琐又难懂Makefile 语法晦涩、CMake 配置复杂新手往往还没开始写业务代码就先被构建工具劝退了。今天介绍的build2是一个开源MIT 协议、跨平台的 C/C 构建系统它用简洁的buildfile描述文件替代了传统构建脚本让写构建配置变得像写诗一样轻松。本文是一份面向新手的build2 快速入门教程目标是在10 分钟内用 buildfile 构建并运行你的第一个 C 程序。build2 是什么build2 不仅仅是一个构建系统它是一整套工具链包含三个层次工具作用通用构建系统负责编译、链接、测试、安装即b命令包管理器bpkg用于下载和消费第三方依赖包项目管理器bdep用于项目的初始化和日常开发管理本次入门教程只聚焦于最核心的部分——用b命令配合 buildfile 构建 C 程序这也是整个工具链的地基。项目本身的构建配置可以参考仓库根目录的 buildfile 和 b/buildfile它们是 build2 官方自己使用 buildfile 编写的活教材。第一步获取 build2 构建系统 ⬇️获取 build2 最直接的方式就是克隆它的源码仓库自行构建git clone https://gitcode.com/gh_mirrors/bu/build2如果你只想获得可用的构建系统二进制更推荐使用官方提供的安装脚本或者直接安装 build2 工具链发行包。在 Linux 上仓库根目录提供了bootstrap.sh引导脚本加上bootstrap.gmakeMakefile 支持并行编译和外部构建例如$ ./bootstrap.sh g # 引导出最小可用构建系统 b/b-boot $ make -f bootstrap.gmake -j 8 CXXg # 或用 Makefile 并行引导详细的引导与安装步骤见仓库中的 INSTALL.cli。build2 要求 C14 编译器GCC 4.9、Clang 3.7、MSVC 14 (2015) Update 3 及更高版本均可正常工作。第二步创建你的第一个 C 程序 经典从 Hello World 开始。新建一个hello/目录里面放两个文件hello/ ├── hello.cxx └── buildfilehello.cxx的内容就是一个普通的 C 程序#include iostream int main () { std::cout Hello, World! std::endl; }重点来了buildfile的内容只有两行using cxx exe{hello}: cxx{hello.cxx}第三部分两行代码读懂 buildfile 语法 这两行看似简单却是 build2 的核心思想。让我们逐行拆解第一行using cxx加载cxx模块。这个模块注册了 C 相关的目标类型如cxx{}、obje{}以及编译、链接所需的各种规则。第二行exe{hello}: cxx{hello.cxx}这是一条依赖声明。冒号左边是目标target——可执行文件hello冒号右边是前置条件prerequisite——源文件hello.cxx。其中exe和cxx叫做目标类型target type。build2 的聪明之处在于依赖声明只告诉你要构建什么而怎么构建由规则rule自动匹配完成。cxx模块自带编译和链接规则所以不需要你手写任何编译命令。 小知识{hxx cxx}{**}表示匹配所有头文件和源文件**是递归通配符。完整语法参考官方文档 doc/manual.cli。第四步一行命令完成构建与运行 ⚡进入hello/目录直接运行$ cd hello/ $ b c cxx{hello} - obje{hello} ld exe{hello}就这么简单b命令自动完成了编译 链接两步屏幕上会清晰显示每个动作。然后运行你的程序$ ./hello Hello, World!如果是 Windows Visual Studio 环境生成的会是hello.exe运行.\hello.exe即可体验完全一致。这是 build2 跨平台能力的最好证明——同一份 buildfile在 Linux、macOS、Windows 上都能跑。第五步必学的 5 个常用命令 ️命令作用示例b构建当前目录所有目标bb update显式执行更新操作b update: hello/exe{hello}b clean清理构建产物b cleanb test运行测试b testb install安装到系统b install其中b install配合config.install.root变量可以指定安装根目录例如b config.install.root/usr/local install卸载只需b uninstall非常干净利落。第六步用配置变量定制构建 ️默认情况下build2 使用构建自身时的编译器且不附加任何优化参数。想换编译器加优化全靠配置变量$ b config.cxxclang # 指定编译器 $ b config.cxx.coptions-O3 # 开启 O3 优化 $ b config.cxx.coptions-g -O2 # 调试信息 优化变量名采用config.前缀的约定命名直观、自解释。第一次配置后这些值会被持久化到build/config.build文件中之后直接b即可复用。第七步顺手给程序加上测试 ✅build2 内置了测试机制只需在 buildfile 中加一行exe{hello}: test true然后执行b test构建系统就会运行hello并检查退出码。想要更严谨的测试可以比较程序输出exe{hello}: test true exe{hello}: file{test.out}: test.stdout truefile{test.out}中存放期望输出test.stdout true表示将程序的标准输出与文件内容比对。这属于简单测试simple test适合单元测试场景更复杂的测试脚本testscript可参考仓库 tests/ 下的丰富示例。总结build2 为什么值得一试 10 分钟下来你会发现build2 的入门体验非常友好✅配置极简两行 buildfile 搞定一个可执行程序无需学习复杂的宏或语法糖✅规则自动匹配编译、链接细节由模块和规则接管你只管声明依赖✅原生跨平台同一份 buildfile 无缝运行于 Linux、Windows、macOS✅自带测试与安装测试、安装、清理都是内置的一等公民操作如果你的下一个 C 项目想要摆脱 Makefile 和 CMake 的折磨不妨把 build2 作为首选构建工具。想深入学习直接阅读仓库内的 doc/manual.cli 官方手册或对照 libbuild2/ 目录下的模块源码研究它的内部实现——一个能构建自己的构建系统本身就很有说服力。现在就去跑通你的第一个 build2 项目吧【免费下载链接】build2build2 build system项目地址: https://gitcode.com/gh_mirrors/bu/build2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/6 21:31:58

Go源码分析:slice底层实现

Go源码分析:slice底层实现摘要: 本篇深入Go slice底层源码,解析SliceHeader结构、扩容机制、append触发拷贝、copy效率分析,分享slice引用底层数组导致数据被意外修改的踩坑经验,对比Go slice与C vector、Rust Vec的内存管理差异。开篇故事 一…

2026/10/9 22:09:19

餐饮外卖销售系统数据库设计:订单表、状态机与分库分表实战

简介:这份资源是一套基于C#与SQL Server 2019开发的餐饮外卖销售系统数据库设计,面向高校数据库课程设计的学生及需要实战练手的初学者。系统划分商家、客户、骑手三类用户界面并配有注册模块,采用扁平化设计,界面达到商业软件水准…

2026/10/9 22:09:19

云原生实训平台如何支撑百人并发大数据教学?

简介:这是一套面向高校计算机与大数据相关专业师生的校园智能实训系统源码,基于达梦云原生大数据平台构建,聚焦数据思维培养与工程实践能力提升,适用于Java后端开发、Vue前端交互、大数据平台集成等中高级实训教学场景。资源共174…

2026/10/9 22:09:19

DSC曲线分析入门:从读图到定量,避开常见误判的实战指南

1. 从一张“看不懂”的曲线说起:DSC到底在测什么第一次拿到DSC曲线的人,十有八九会盯着那条忽上忽下的线发懵——横坐标是温度,纵坐标是热流,曲线一会儿往下凹一个坑,一会儿又往上鼓一个包,旁边还标着各种玻…

2026/10/9 22:09:19

Oracle 19c认证备考:原题资料解构与考场环境实战验证

简介:本资源是面向Oracle数据库管理员、DBA初学者及19c认证备考人员的高价值原题解析资料,聚焦核心考点与易错陷阱,助力夯实SQL语法、对象管理与连接机制等关键能力。压缩包为单个674KB的PDF文件,内容完整覆盖1Z0-082新版真题&…

2026/10/9 22:09:19

volatile与JMM深入解析:从内存可见性到并发实战

我从一个特别具体的场景开始聊:你写了一段代码,主线程把一个boolean标志位改成false,想让子线程跳出while循环,结果子线程像没看见一样继续死转,CPU 飙到 100%。这种问题在 Java 并发编程里几乎人人都撞过,…

2026/10/9 22:04:19

Python音乐爬虫实战:从架构设计到反爬应对的工程化指南

1. 音乐爬虫到底在爬什么:先搞清楚目标再动手很多人一听到“音乐爬虫”这四个字,脑子里第一反应就是“批量下载歌曲”。这个理解不能说错,但太窄了。我在实际折腾这类项目的过程中发现,音乐爬虫能做的事情远比下载歌曲丰富&#x…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑