IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 七大顶尖 C++ 开源构建系统 -> 正文阅读

[C++知识库]七大顶尖 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。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 18:48:02  更:2022-06-29 18:48:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:01:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码