概述一些CMake相关的内容

CMake可以说已经是C/C++构建的事实标准了,目前绝大多数的C/C++项目都已经采用CMake进行构建,好处至少有两点:一个是跨平台,另一个是方便依赖库引入。不过笔者认为,像CMake这种工具其实也没必要特意学习,说到底它也不过是方便程序员使用的工具,没有它程序员也能进行C/C++程序的构建,只不过会麻烦一点。像这样的工具的学习,应该是遇到了已经存在的问题,再带着问题去学习它,方才有效果。否则的话,连使用这个工具的目的都不明白,又怎么学的进去呢?

简单来说,CMake是用来构建C/C++程序的。笔者在对CMake有一定了解之前,经常将构建程序说成是编译程序,这样其实是不太准确的。其实要生产一个大型的程序,通常包含非常多的构建过程:预处理、编译、汇编、链接、测试、安装以及清理等。不止是C/C++程序,基本上所有编程语言的程序都会将代码文件组织成工程,来管理这个代码项目的构建过程,只不过它们各自的步骤略有不同。理解了这一点,就能很快上手其他编程语言的构建过程,这也是软件工程中对代码进行组织管理的关键部分。

很多人说,CMake的语法太丑陋了,用起来一点都不简洁优雅。其实真要这么说,那JavaScript的语法才是宇宙第一的烂,还不是成为了目前Web前端的唯一编程语言。其实一门编程语言设计好不好只是一方面,只要确实解决了行业的痛点问题,用的人就会多,就会有越来越多的人给其打补丁,就会越来越流行。CMake也是如此,之所以会越来越多的人用,就是因为其确实解决了C/C++程序跨平台编译的行业痛点。十几年前,其实只有一少部分项目使用CMake,但CMake一直坚持更新改进,到今天甚至很多IDE都支持直接导入CMake工程了。

回到CMake学习的问题,之所以觉得比较困难,其中一个原因就是CMake包含了几乎所有C/C++程序构建的内容,这对于一个初学者来说是很难上手了。最适合初学者上手的是什么呢?像Visual Studio 创建的工程那样,下一步下一步,有啥特殊的就右键属性设置一下,所谓的构建过程就是按一下F5就行了。但是要学习CMake肯定不是这样,不说要细致地掌握这个构建工具链,至少要知道软件构建的大概步骤和流程。要了解这一点,不妨从编译C/C++程序的依赖库开始。

作为本篇的结果,说一下CMake的安装。CMake的安装没有什么特别的,直接在官网上下载然后下一步下一步安装即可,不过有两点需要注意:第一个是要确保正确添加了环境变量,保证CMake指令能被系统识别到;第二个版本用新不用旧,因为版本越新支持查找的依赖库越多。