记录一下CMake的一些知识信息
一、前言
经常需要使用到CMake,但是对其相关知识知之甚少,所以这里开一篇博客来记录一下CMake的一些知识,慢慢完善自己对它的认知。
二、CMake入门
2.1 什么是CMake?
CMake 是一个跨平台的构建系统生成器。它不直接构建软件,而是生成其他构建系统(如 Makefile、Visual Studio 项目文件、Ninja 等)的配置文件,然后由这些构建系统完成实际的编译工作
2.2 CMake的主要功能
- 跨平台构建:在不同操作系统上使用相同的配置文件生成适合该平台的构建系统
- 依赖管理:查找和链接外部库和依赖项
- 构建配置:支持不同的构建类型(Debug、Release 等)
- 测试支持:集成 CTest 进行测试管理
- 安装规则:定义如何安装编译好的软件
- 打包支持:通过 CPack 创建安装包
2.3 CMake基本概念
-
CMakeLists.txt文件
是 CMake 的核心配置文件,每个 CMake 项目至少有一个位于项目根目录的 CMakeLists.txt 文件。子目录也可以有自己的 CMakeLists.txt 文件。 -
构建目录(Build Directory)
CMake推荐 “外部构建” (out-of-source build), 即将构建产生的所有文件与源码进行隔离,单独存放咋一个文件夹当中,通常是build文件夹。这样可以保证源代码目录的整洁。常见的目录结构如下:
MyProject/
├── CMakeLists.txt # 主 CMakeLists.txt
├── build/ # CMake 模块和脚本
├── source code/ # 其他的源码
- 生成器(Generator)
- CMake 支持多种构建系统,称为"生成器"。常见的有:
- Unix Makefiles(Linux/macOS 默认)
- Ninja(更快的构建系统)
- Visual Studio(Windows 默认)
- Xcode(macOS 的 IDE)
2.4 CMake基本使用流程
- 编写CMakeLists.txt
简单示例:
# 指定 CMake 最低版本要求
cmake_minimum_required(VERSION 3.10)
# 设置项目名称和支持的语言
project(MyProject VERSION 1.0 LANGUAGES CXX)
# 添加可执行文件
add_executable(myapp src/main.cpp src/utils.cpp)
# 包含头文件目录
target_include_directories(myapp PUBLIC include)
# 链接外部库
find_package(Boost REQUIRED COMPONENTS system filesystem)
target_link_libraries(myapp PUBLIC Boost::system Boost::filesystem)
- 配置项目
在终端执行指令:
# 创建并进入构建目录
mkdir build && cd build
# 配置项目(生成构建系统)
cmake ..
- 构建项目
在终端执行指令:
# 在构建目录中执行构建
cmake --build .

浙公网安备 33010602011771号