七大顶尖 C++ 开源构建系统

本文介绍了七大顶尖的开源C++构建系统,包括Make、现代CMake、Ninja、SCons、Meson、MSBuild和Waf。每个系统都有其独特的卖点,例如速度、易用性和跨平台能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在本篇博客中,我想介绍七大顶尖的开源 C++ 构建系统。当然,我们并不是简单排名列举,而是要细加分析这些顶级开源 C++ 构建系统是什么,又是为什么能成为顶尖系统。

别告诉我月光很明亮,让我看到那碎玻璃上闪烁的光”。——安东·契诃夫

我当然成为不了契诃夫,但要赏‘月光’,先从‘玻璃’开始。?

1. Make

Make 无处不在。但这也不难理解,Make 创建于1977 年,在计算机行业的影响深远。Make 广泛适用于所有类 Unix 系统、Macintosh 系统,以及 Windows 的所有版本中,可通过 Cygwin 或本地 nmake 执行。Make 使用简单的文本文件 makefiles 来指导构建。makefile 包含如下规则:

shownottell: show.c tell.c    gcc –o shownottell show.c tell.c

规则包含 Target(目标)和  Recipe(命令)。Target 是文件名,在上面的例子中是 shownottell。分号分隔的是 Prerequisites(依赖文件)。Recipe 行由 shell 命令组成,需要以 Tab  键开始。执行这些shell 命令更新目标,我们要做两件事:

  • Target 是否需要更新?即 Prerequisites 是否需要更改;
  • 如果是,如何更新 Target ?即是否需要运行 Recipe。

这就是 Make 的规则。对于简单的项目,Make 构建系统易于实现和维护。随着项目的发展,makefile 会变得非常复杂。尽管年代久远,Make 仍然是构建软件最常用的工具。

2.现代 CMake

现代 CMake 是 Make 的真正继任者。在之前的一系列文章中,我一直在谈论CMake。相关链接如下:

为什么说现代 CMake 是 Make 的继承者?事实胜于雄辩,我把悬念留到CMake 的博客中,大家可以自行研究。但是,我相信,许多新的开源 C++ 项目要么已经在使用,要么正准备使用 CMake 了。点击链接了解 CMake 开源项目。

3. Ninja

一个产品的存在必须有一个独特的卖点(USP)。Ninja 的独特卖点(USP)是对速度的执著。本着“事实为先”的精神,我们先看图:


图片来源

Ninja 是一个小型的开源构建系统,其输入文件由更高级别的构建系统(比如CMake)生成,Ninja 的设计专注速度,高速运行构建。在 Visual Studio 2019 中,可以使用 CMake 和 Ninja 直接构建 Linux 项目。点击链接了解 Ninja 开源项目。

4. SCons

在著作《软件构建系统:原则和经验》中,Peter Smith 深入观察了 SCons,引用他的原话:

“如果你正在编写一个新的 C/C++ 软件构建系统,建议首选 SCons 或CMake。”

这句话的原文是与 GNU Make(了解更多 GNU Make 的信息)进行比较。但是可以清楚地看到,SCons 是 CMake 强有力的竞争对手。SCons 作为一个升级的跨平台开源构建,足以替代经典的 Make。SCons 的配置文件是用 Python 编写的,Python 也是 SCons 的独特卖点(USP),主张使用真正的编程语言来解决构建问题。当前版本的 SCons 需要 Python 版本 3.5 才能运行。点击链接了解 SCons 开源项目。

5. Meson

科技不断发展——我们正在进入粒子物理学时代。? 玩笑归玩笑,Meson 是一个开源的构建系统,速度快,易使用。正如大自然无法忍受真空环境一样,Meson 也无法忍受:

  • 开发人员在编写、调试构建定义上浪费太多时间;
  • 为构建系统开启编译浪费太多时间

Meson 没有使用图灵完备语言(Turing Complete language)编写构架定义。相反,Meson 采用了一种特定语言(DSL),便于使用、非图灵完备,并将成为其独特卖点。Meson 支持多种语言,包括 C、C++ 和 RIST,能跨平台进行开源构建。Meson 的默认构建生成器为 Ninja。点击链接了解 Meson 开源项目。

6. MSBuild

Microsoft Build Engine(MSBuild)是用于生成应用程序的平台。不过,这篇博客不是关于七大开源 C++ 构建系统的吗?MSBuild 开源吗?话不多说,先看图:

是的,在 2015 年底,微软决定对 MSBuild 开源软件开发流程。其第一个版本于 2017 年 3 月 7 日发布,并与 Visual Studio 2017 一起打包发行。MSBuild 现在是一个真正的跨平台应用程序,可在支持 .NET Core 的类 Unix 系统上运行。点击链接了解 MSBuild 开源项目。

相关阅读:什么是 MSBuild

7. Waf

尽管可能很多人都没有听说过 Waf 构建工具,但 Incredibuild 早已抢先集成。Waf 是 Python 开源构建工具,支持多种编程语言,如 C、C++、C 语言、Java 甚至 Fortran。Waf 是一个用于配置、编译和安装应用程序的框架。我们将展示如何使用 Waf。我利用源代码构建了 Waf,因此我们先来看看其版本:

这里展示的是,我如何构建 Waf  中的 C++  演示项目:

这是我的 wscript 文件, 用于协调构建:

如果你已熟悉 Python,那 Waf 上手也会很快。 点击链接了解 Waf。

最后,以《契诃夫法则》结尾:

“第一幕中出现的枪,在第三幕必然会发射。?

这里介绍的每一个工具都有其用途。合理设置并使用,让你的 C++ 项目更有生机,扬长避短,理智谋划。静候佳音。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值