CMake 初步使用
CMake 初步使用
CMake 是一个跨平台的构建系统生成工具,它可以根据简单的配置文件(CMakeLists.txt)生成不同平台的构建文件(如 Makefile、Visual Studio 项目文件等)。对于 C/C++ 项目,掌握 CMake 的基本使用能极大简化跨平台开发流程。
一、CMake 基本概念
CMakeLists.txt:CMake 的配置文件,描述项目的构建规则
构建目录:存放生成的构建文件和编译产物的目录,通常建议与源代码分离
生成器:CMake 支持的不同构建系统(如 Unix Makefiles、Visual Studio、Xcode 等)
目标(Target):CMake 中要构建的实体(可执行文件、库等)
二、安装 CMake
Windows:从 CMake 官网 下载安装包,勾选 "Add CMake to the system PATH"
Linux:通过包管理器安装 sudo apt install cmake(Debian/Ubuntu)或 sudo yum install cmake(CentOS)
macOS:使用 Homebrew 安装 brew install cmake
验证安装:cmake --version 应显示版本信息
三、最简单的 CMake 项目
3.1 项目结构
创建一个简单的 C++ 项目,结构如下:
1 | hello_cmake/ |
3.2 编写代码
main.cpp 内容:
1 | #include <iostream> |
CMakeLists.txt 内容:
1 | # 规定 CMake 最低版本 |
四、使用 CMake 构建项目
4.1 命令行构建(推荐)
创建并进入构建目录(out-of-source build,避免污染源代码):
1 | mkdir build |
生成构建文件:
1 | # 基本用法:生成默认构建系统(如 Linux 上的 Makefile) |
编译项目:
1 | # 使用 Makefile 时 |
运行程序:
1 | ./hello |
4.2 预期输出
1 | Hello, CMake! |
五、稍复杂的项目:包含多个源文件
5.1 项目结构
1 | math_project/ |
5.2 代码实现
math_functions.h:
1 | #ifndef MATH_FUNCTIONS_H |
math_functions.cpp:
1 | #include "math_functions.h" |
main.cpp:
1 | #include <iostream> |
5.3 编写 CMakeLists.txt
1 | cmake_minimum_required(VERSION 3.10) |
5.4 构建并运行
1 | mkdir build && cd build |
输出:
1 | 3 + 4 = 7 |
六、常用 CMake 命令
项目设置
1 | cmake_minimum_required(VERSION 3.10) # 最低版本要求 |
添加目标
1 | add_executable(myapp src1.cpp src2.cpp) # 可执行文件 |
链接库
1 | target_link_libraries(myapp mylib) # 将 mylib 链接到 myapp |
设置 C++ 标准
1 | set(CMAKE_CXX_STANDARD 11) # 设置 C++ 标准 |
添加包含目录
1 | target_include_directories(myapp PUBLIC include/) # 添加头文件目录 |
七、CMake 构建流程总结
- 编写源代码和 CMakeLists.txt
- 创建并进入构建目录(mkdir build && cd build)
- 运行 cmake .. 生成构建文件
- 运行 make(或其他构建命令)编译项目
- 运行生成的可执行文件
CMake 的核心思想是 "一次编写,到处构建",通过简单的配置文件就能在不同平台上生成合适的构建系统,非常适合跨平台项目开发。对于更复杂的项目(如包含第三方库、多目录结构),可以逐步学习 CMake 的高级特性。