CMake Tutorial (3.30-rc3版) 练习和点评
Author: ChrisZZ
Time: 2024.06.16 23:37:00
CMake 官方文档提供了 CMake Tutorial, 目前最新版是 CMake-3.30-rc3, 有12个Step供用户练习。 CMake Tutorial 是从 CMake 3.16 版本开始能从官方网页找到, 并且每一版都有改进 Tutorial 内容。
作为有实际C/C++项目中大幅使用 CMake 构建经验的程序员, 我认为这套教程不适合入门, 有一定 CMake 经验后可以尝试练习, 但目前的教程内容主次不当, 在一些细节上过于精雕细琢, 而基本的软件包发布流程迟迟没有走通, 让人难以捉摸。 前面4个半 Step 还算可以接受, 后面7个半Step,大部分很糟糕, 不能说没用, 但是不合适。
Anyway,总的来说有一些收获, 也有很多不足; 而广为流传的一份中文 CMake 教程, https://www.hahack.com/codes/cmake, 我怀疑作者只是简单翻译了官方例子,没做太多改进, 毕竟很多内容相同; 而它在 github 上的 star 接近1500了,说明大部分卢瑟连官方 CMake Tutorial 都不知道去看, 只会看中文翻译的,真的挺唏嘘的。 简单记录一下吧。
文章目录
- CMake Tutorial (3.30-rc3版) 练习和点评
-
- 介绍
- Step 1: [基础起点](https://cmake.org/cmake/help/latest/guide/tutorial/A%20Basic%20Starting%20Point.html)
- Step 2: [创建库](https://cmake.org/cmake/help/latest/guide/tutorial/Adding%20a%20Library.html)
- Step 3: [添加库的使用需求](https://cmake.org/cmake/help/latest/guide/tutorial/Adding%20Usage%20Requirements%20for%20a%20Library.html)
- Step 4: [生成器表达式](https://cmake.org/cmake/help/latest/guide/tutorial/Adding%20Generator%20Expressions.html)
- Step 5: 安装
- 其他/补充/吐槽
介绍
这份教程使用的源代码是在 cmake-3.30.0-rc1-tutorial-source.zip 中, 每个步骤对应一个子目录, 提供了起点代码。 这份教程里的例子是逐步递进的, 也就是说每个 step 的初始代码, 都是前一个 step 的完整解决方案。
Step 1: 基础起点
本节共有12个TODO, 按顺序逐一实现即可, 包含了:
- 创建项目
- 指定项目版本号
- 指定 C++ 标准
- 创建可执行目标
- 指定版本号
- 通过 configure 文件使用版本号
- C++ 代码中使用版本号
文档里也提到了一个细节,尽可能遵循:
cmake 命令, 应当使用小写而不是大写, 更不是混合大小写
执行构建, 运行:
cd Step1
cmake -S . -B build
cmake --build build
.\build\Debug\Tutorial.exe 42
个人认为版本号、 configure 文件, 初学者可以跳过, 实际项目中遇到使用的并没有很多。
Step 2: 创建库
本节共有14个TODO, 坦白说如果让初学者一次完全学会和写出, 还是有难度。
- 使用了 add_library() 创建库
- 使用了 add_subdirectory() 引入子目录
- 使用了 target_include_directories() 设置包含目录
- 使用了 target_