文章目录
- 目的
- 环境准备
- 快速入门
- 总结
目的
C/C++的代码可以直接使用编译工具链进行编译,这种方式文件一多就不方便了。也可以编写 Makefile
然后使用 make
进行编译,当然写 Makefile
其实也挺繁琐。对于大型项目比较流行的是编写 CMakeLists.txt
然后使用 cmake
工具进行编译。
CMake is a tool to manage building of source code.
CMake 是一个用于管理源代码构建的工具。
官网:https://cmake.org/
目前 CMake 最新的正式版本是 3.28.4
,官方也提供了渐进式的教程:https://cmake.org/cmake/help/v3.29/guide/tutorial/index.html
官方的渐进式教程从官方角度多的尽量介绍了官方提供的功能,不过对于入门来说稍稍生硬,对于入门使用来说可以有更快入门的方式的。这篇文章将介绍写更加简单的入门使用的方式。
环境准备
这里在 Ubuntu 22.04
下进行演示,系统安装完成后已经安装了如下内容,如果不安装可能后面 CMake 或是无法安装或是使用缺少组件:
# 基础升级与安装:
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential
# sudo snap install code --classic # 安装 VS Code
之后就可以安装 CMake 了,本文编写时下面方式安装的就是 3.29.1
版本:
sudo snap install cmake --classic
# cmake --version # 查看版本
对于其它的系统,可以去 CMake 官网下载编译好的二进制文件进行安装。
快速入门
CMake 和 Make等其实是差不多的,像是一门脚本语言,本身并不能编译程序,而是用来描述编译规则的。 CMake 有自己的语法,有命令、变量、语句等,这些内容可以在官方参考手册中找到:
https://cmake.org/cmake/help/v3.29/
CMake 的基本的语法规则如下:
- CMake脚本文件名为
CMakeLists.txt
,每个项目的每个目录下可以有一个脚本文件; - 使用
add_executable
命令来生成可执行文件,使用add_library
命令来生成库; - 可以使用
include_directories
等命令添加头文件路径,使用aux_source_directory
等命令添加源码路径;
下面是个最基础的演示:
上面演示中一个个添加了所有涉及的文件,如果文件多了这么操作其实是不方便的,也可以直接添加目录:
如果项目更大的情况下上面方式其实还是比较麻烦,完全可以由 CMake 语句和变量自动遍历所有目录进行添加:
除了直接生成可执行文件,也可以生成库或者引用库:
总结
CMake的入门使用还是比较简单的,其目的是为了简化项目构建编译流程,相比Make的语法来说CMake的语法相对来说简单些,更多内容可以参考官方参考手册:
https://cmake.org/cmake/help/v3.29/
另外CMake其实是一个统称,包含了好几个工具,除了核心的cmake,还有ctest、cpack测试打包工具以及cmake-gui、ccmake等图形化工具。
CMake确实比Make简单很多,不过也由好多人觉得CMake还是挺复杂的,所有也诞生出一些别的工具来进行项目构建,比如 xmake 。