记录一下CMake的一些知识信息

一、前言

经常需要使用到CMake,但是对其相关知识知之甚少,所以这里开一篇博客来记录一下CMake的一些知识,慢慢完善自己对它的认知。

二、CMake入门

2.1 什么是CMake?

CMake 是一个跨平台的构建系统生成器。它不直接构建软件,而是生成其他构建系统(如 Makefile、Visual Studio 项目文件、Ninja 等)的配置文件,然后由这些构建系统完成实际的编译工作

2.2 CMake的主要功能

  1. 跨平台构建:在不同操作系统上使用相同的配置文件生成适合该平台的构建系统
  2. 依赖管理:查找和链接外部库和依赖项
  3. 构建配置:支持不同的构建类型(Debug、Release 等)
  4. 测试支持:集成 CTest 进行测试管理
  5. 安装规则:定义如何安装编译好的软件
  6. 打包支持:通过 CPack 创建安装包

2.3 CMake基本概念

  1. CMakeLists.txt文件
    是 CMake 的核心配置文件,每个 CMake 项目至少有一个位于项目根目录的 CMakeLists.txt 文件。子目录也可以有自己的 CMakeLists.txt 文件。

  2. 构建目录(Build Directory)
    CMake推荐 “外部构建” (out-of-source build), 即将构建产生的所有文件与源码进行隔离,单独存放咋一个文件夹当中,通常是build文件夹。这样可以保证源代码目录的整洁。常见的目录结构如下:

MyProject/
├── CMakeLists.txt           # 主 CMakeLists.txt
├── build/                   # CMake 模块和脚本
├── source code/             # 其他的源码
  1. 生成器(Generator)
  • CMake 支持多种构建系统,称为"生成器"。常见的有:
  • Unix Makefiles(Linux/macOS 默认)
  • Ninja(更快的构建系统)
  • Visual Studio(Windows 默认)
  • Xcode(macOS 的 IDE)

2.4 CMake基本使用流程

  1. 编写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)
  1. 配置项目
    在终端执行指令:
# 创建并进入构建目录
mkdir build && cd build

# 配置项目(生成构建系统)
cmake ..
  1. 构建项目
    在终端执行指令:
# 在构建目录中执行构建
cmake --build .

三、CMake学习资源

posted @ 2025-03-10 13:52  笑眯眯办大事  阅读(68)  评论(0)    收藏  举报