CMake 学习笔记
CMake是一个跨平台的项目管理工具, CMakeLists.txt 文件在CMake作用下生成Makefile文件。
CMake 运行流程
源文件在该目录下的 CMakeLists.txt 在 CMake 作用下生成 Makefile 文件,make 命令根据 Makefile 对源文件进行编译。

CMake 简化了 Makefile 文件的编写难度,CMake 会自动检测可用编译器,根据配置文件自动寻找外部依赖库等。每个目录下都应该有 CMakeLists.txt 文件。根 CMakeLists.txt 会收集所有目录下的子 CMakeLists.txt。
最小 CMakeLists.txt 的内容:
bash
# cmake语法关键字--大/小写无关
# cmake的最低版本号,注意VERSION需要大写
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
# 设置一个工程名字
project(Demo1)
# 目标可执行程序Demo, 需要编译main.cc
add_executable(Demo main.cc) 编写完成 CMakeLists.txt 之后,就可以执行 cmake ${PATH} 来生成 makefile 文件,其中 ${PATH} 为根 CMakeLists.txt 路径。
CMake 语法预设变量
| 变量 | 含义 |
|---|---|
| CMAKE_MAJOR_VERSION | cmake 主版本号 |
| CMAKE_MINOR_VERSION | cmake 次版本号 |
| CMAKE_C_FLAGS | 设置 C 编译选项 |
| CMAKE_CXX_FLAGS | 设置 C++ 编译选项 |
| PROJECT_SOURCE_DIR | 工程的根目录 |
| PROJECT_BINARY_DIR | 运行 cmake 命令的目录 |
| CMAKE_CURRENT_SOURCE_DIR | 当前CMakeLists.txt 所在路径 |
| CMAKE_CURRENT_BINARY_DIR | 目标文件编译目录 |
| EXECUTABLE_OUTPUT_PATH | 重新定义目标二进制可执行文件的存放位置 |
| LIBRARY_OUTPUT_PATH | 重新定义目标链接库文件的存放位置 |
| CMAKE_ROOT | CMake 安装路径 |