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


    目录

    1. Make

    2.现代 CMake

    3. Ninja

    4. SCons

    5. Meson

    6. MSBuild

    7. Waf


    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。

  • 相关阅读:
    RS485(一):电路与波形
    【RTOS训练营】继续程序框架、tick中断补充、预习、课后作业和晚课提问
    【离散数学必刷题】命题逻辑(第一章 & 左孝凌)刷完包过!
    Dcoker入门,小白也学得懂!
    Set 集合和其之类 HashSet、LinkedHashSet
    MySQL数据库事务
    MySQL | 行锁——记录锁、间隙锁 、临键锁、插入意向锁
    Linux - 输入输出
    阿里终面:说说OAuth2.0 与 单点登录的区别?
    mysql索引常见问题
  • 原文地址:https://blog.csdn.net/LearnLHC/article/details/125439796