C 54_C语言CMake基础详解

一、CMake 简介

1.1 什么是CMake

在前面的文章中,我们介绍了C/C++ 项目编译工具 Makefile。虽然它实现了 C/C++ 项目编译的功能,但写起来真的是让人头大。尤其是当项目文件一多,手写依赖就像在搬砖,费时又费力。那么有没有更优雅的工具了呢?答案是:有!Cmake。

CMake 是一个跨平台的项目构建工具,通俗点说,它会帮你生成 Makefile 或其他编译系统需要的构建文件。

CMake 就像一个专业的项目管家,它会帮你处理所有琐碎的编译细节。你只需要告诉它“我要干什么”,剩下的事情交给它就行了。CMake还能很好的跨平台支持,能帮你生成各种平台的构建系统,比如 Makefile、Visual Studio 工程文件、Xcode 工程。

1.2 CMake 的特点

  • 不用手写复杂的 Makefile:你只需要写一个简单的CMakeLists.txt,CMake 会自动帮你生成 Makefile。
  • 支持跨平台开发:不管是 Linux、Windows 还是 MacOS,CMake 都能轻松搞定。
  • 自动化依赖管理:只要源文件有改动,它会自动处理文件依赖,不用你手动维护。
  • 支持大项目:几百上千(甚至更多)个源文件的项目,CMake 比你还细心,编译起来得心应手。

简单来说,CMake 就是中大项目的完美编译系统。

二、CMake 的基本使用流程

2.1 基本流程

CMake 的基本使用流程有几个简单步骤:

  • 创建一个CMakeLists.txt 文件,告诉 CMake 要编译哪些源文件。
  • 运行 CMake 命令,生成构建文件(比如 Makefile)。
  • 用生成的构建文件编译项目,得到程序。

以下是CMake 与Makefile 的构建流程,让我们更直观地理解这些步骤:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
项目源码
   │
   └──► [CMakeLists.txt]  # 编写 CMake 构建文件
           │
           ▼
         cmake (命令)  # 运行 CMake 命令生成 Makefile
           │
           ▼
      [Makefile]      # 自动生成的 Makefile
           │
           ▼
         make (命令)  # 使用 Makefile 构建目标
           │
           ▼
       目标文件        # 编译生成的目标文件(如可执行程序或库)

我们的项目代码放在 / 目录下,使用 CMake 的流程如下:

1
2
3
4
5
6
cd project
mkdir build           # 创建编译目录(推荐在项目外部)
cd build              # 进入编译目录
cmake ..              # 生成 Makefile
make                  # 开始编译
./app               # 运行可执行文件