CMake构建实战:项目开发卷
上QQ阅读APP看书,第一时间看更新

前言

如今,CMake几乎已经成为构建C和C++项目的业界标准工具。众多开源项目,甚至商业项目都已经或逐渐转向采用CMake作为构建工具。例如,Qt就已经在其6.0版本采用CMake作为首选构建工具了。

然而,尽管CMake被广泛采用,却很少有图书对它进行系统介绍。网上的随笔教程质量参差不齐,不成体系,尤其是很少有教程会完整地介绍CMake的语法,这不利于技术的学习与传播。另外,CMake的3.0版本更新了很多内容,但现存资料有的年代久远,有的可能会混杂新旧知识,同样不利于学习最新技术。

因此,笔者产生了创作本书的想法。本书会从基础的C和C++程序构建讲起,帮助读者建立良好的概念模型,然后仿照编程语言图书的一般结构介绍CMake脚本语言,最后深入讲解CMake作为构建工具的种种用法。本书知识体系相对完备,可以帮助读者更加系统地学习CMake。同时,本书基本摒弃了过时的CMake程序编写方式,全面拥抱“现代CMake”。

笔者在学习CMake的过程中,也常常苦于官方文档艰涩难懂,缺乏实例辅助理解。因此笔者在创作本书时,编写了大量实例代码,对于重要的基础语法、常用命令等,均配有实例展示,希望能够帮助读者更高效地理解和学习。

本书主要介绍C和C++程序构建的相关知识,包括直接调用C和C++编译器完成项目构建的基础内容,以及使用CMake完成项目构建的相关内容。本书暂不涉及CMake中与测试集成(包括CTest和CDash)、安装、打包(包括CPack)等相关的内容。

本书整体上分为三个部分。

第1章介绍C和C++程序构建的相关基础知识。该章不会涉及CMake,主要讲解C和C++的主流编译器及其相关命令行工具、Makefile等的使用,同时会抽象出与项目构建相关的概念模型。读者如果对构建C和C++程序的工具与流程相当熟悉,可以跳过这一部分。

第2章到第5章将带领读者初步认识CMake,并按照一般编程语言入门图书的惯例介绍CMake脚本语言的基础语法、常用命令等。该部分几乎只介绍脚本语言,很少涉及与构建相关的内容,相信能够帮助读者更专注地夯实基础。

第6章到第11章介绍CMake项目构建的相关内容。第7章介绍CMake从配置生成项目、构建项目,到项目被用户使用的完整生命周期,以帮助读者对CMake的功能使用建立宏观认知。后续各章则会深入探究与CMake项目构建相关的内容。

本书第5章和第11章是两个实践章节。第5章应用CMake脚本语言的相关知识,实现了一个快速排序算法程序;第11章则综合应用了本书介绍的知识,基于onnxruntime第三方机器学习推理运行时库,实现了一个手写数字识别库及配套命令行工具。希望这两个实践项目能够帮助读者更快更好地将所学知识应用于实践中。