跳转至

概览

学习了前面的基础知识,现在你应该已经掌握了多文件 C++ 项目的编译方法。接下来,本章将会介绍不同的构建系统以及元构建系统,为之后编译更大的项目做准备。

什么是构建系统?

简单来讲,构建系统就是一个帮你从源代码、库文件最终构建出一个可执行二进制(或其他产物,例如操作系统镜像)的工具。例如,对于 C++ 项目而言,就是帮你将一堆 .cpp.so.a 文件编译出一个可执行的文件。它一般会直接调用编译器来生成二进制文件。

为什么需要构建系统?

在前面的示例中,我们只需要将所有的文件一股脑地传给 g++ 命令即可,看起来这已经足以开始编写项目了。或者,我们将编译命令直接写到一个脚本里,需要编译的话,直接执行这个脚本就好了。那么,我们为什么还需要构建系统呢?

丰富的工具函数支持

构建系统包含了人们多年以来在编译软件的经验总结,往往提供了大量的工具函数来辅助我们构建软件。例如,构建系统可以帮助我们使用正则表达式来指定哪些源文件需要参与编译,无需我们一个个手动指定;而我们需要什么依赖的话,也只需要通过函数声明即可,有些构建系统甚至会帮助我们下载好正确的依赖。

减少不必要的编译

对于一个项目而言,我们往往只修改其中一两个文件之后,就需要编译运行进行调试,而大部分文件都是没有修改的。如果我们每次都将所有文件传递给编译器,那么即使文件没有修改,也会被全部重新编译,非常浪费时间。构建系统则会分析哪些文件被修改了,然后只重新编译这些文件,再进行链接,就能大大减少构建的时间了。

选择合适的构建系统

构建系统是 C++ 项目最基础的一环,不过 C++ 的自由也使得不同项目、不同社区、不同公司等各自衍生出了不同的构建系统。它们有各自的优缺点,选择合适的构建系统能提高构建效率,从而提高开发效率。


最后更新: 2021-07-29 22:44:18
本页作者: Howard Lau