基础

组织结构

cmake 有三种结构: 目录, 使用 add_subdirectory() 来导入子目录, 子目录中要有一个 CMakeLists.txt 文件, 执行子目录中的 CMakeLists.txt 时, 会创建一个新的子作用域, 继续父作用域中的属性.

脚本, cmake 本身是一个脚本语言, 可以用 cmake -P script.cmake 来执行一个脚本文件.

模块, 比如常用的 include()find_package() 命令, 就是导入相应的 cmake 模块, 跟 C++ 中的 #include 类似, 导入的模块就是在当前作用域运行的. 可以通过修改 CMAKE_MODULE_PATH 来修改模块的查找路径. 模块通常放在项目的 cmake 目录里, 比如 FindFooLibrary.cmake.

版本号

请使用 cmake 3.2 以上的版本. 另外, 条件允许的话优先考虑使用更高的版本, 比如 3.10, 3.13 甚至最新版. 这几版中改动比较大, 修复了不少问题, 具体可参考 cmake 的 changelog. 像 Ubuntu 14.04 这样的旧系统里, 默认还是 2.8 这种旧版本, 建议直接手动安装最新版.

命令

cmake 代码的基本的形式是:

command_name(string1 string2 ...)

参考

可以阅读 cmake-language 手册, 对 cmake 语法有个基本的认识.