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

3 篇文章 0 订阅

目录

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。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
c 实现的开源 IM 系统是指使用 C 语言来开发开源即时通讯系统。C 是一种高性能、低开销的编程语言,适合编写底层网络通信和系统级别的软件。下面将介绍一个使用 C 实现的开源 IM 系统:MongooseIM。 MongooseIM 是一个基于 XMPP(可扩展通信和表示协议)的开源 IM 系统,使用 C 语言进行开发。它的主要目标是提供可靠、高性能和可扩展的 IM 解决方案。MongooseIM 支持它能够在高负载情况下处理数万个并发用户,它具有横向扩展的能力,可以方便地扩展到更多的用户和服务器。 MongooseIM 的特点包括: 1. 可靠性和稳定性:它使用了高效的内存管理和多进程架构,确保系统的稳定性和可靠性。 2. 高性能:MongooseIM 提供了高性能的消息传递机制,支持实时消息的发送和接收。 3. 可扩展性:系统可以水平扩展,支持集群和负载均衡,可以轻松地扩展到数万个并发用户。 4. 安全性:MongooseIM 支持多种身份验证机制,包括用户名/密码、OAuth 和外部身份验证机制,确保用户数据的安全性。 5. 开放性和可定制性:MongooseIM 遵循 XMPP 协议,具有开放的标准,可以与其他支持 XMPP 的 IM 系统进行互操作。同时,开发者也可以根据自己的需求定制和扩展 MongooseIM。 总之,C 实现的开源 IM 系统 MongooseIM 是一个适用于大规模、高负载场景的高性能、可靠和可扩展的 IM 解决方案,具有安全性和定制性。它为开发者提供了一个功能强大的基础平台来构建自己的 IM 系统
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值