C++ 构建系统入门

首先推荐大家看一下这一篇Jetbrains的研究报告:

https://www.jetbrains.com/lp/devecosystem-2020/cpp/


编辑器使用分布


构建系统使用分布:


CMake 与 Makefile 是非Windows平台最主流的两大构建系统。


下面讲正题:

构建系统的最主要功能是解决文件编译顺序依赖,三方共享库依赖等问题。

正确使用这些构建系统能够帮助大家节省大量时间,避免重复的手动敲命令。

今天来说说Makefile 以及 GNU Make 这个源远流长,横亘古今的优秀构建系统(虽然我也推荐新项目使用CMake)。

Make 最核心的理念就是目标驱动型构建,即使用者通过表述目标与这些目标之间的关系来确定一个构建任务图。

表达形式类似:

target:  dependencies ...

          commands

          ...


举个例子:

我们就定义了一个 foo.o 这个目标。此外每条 rule 都表述了两个信息:

This rule says two things:

How to decide whether foo.o is out of date: it is out of date if it does not exist, or if either foo.c or defs.h is more recent than it.

How to update the file foo.o: by running cc as stated. The recipe does not explicitly mention defs.h, but we presume that foo.c includes it, and that is why defs.h was added to the prerequisites.


具体的Make 的细节在文档里讲的比较清楚了、 Makefile 规则大家也可以参考文档:

https://www.gnu.org/software/make/manual/html_node/index.html


大家可以写个Makefile 动手尝试一下!

此外,一些好用的文章推荐给大家:

全面介绍:http://c.biancheng.net/view/7097.html

你可能感兴趣的:(C++ 构建系统入门)