【CMake】使用 CMake 构建 C/C++ 项目的标准流程详解

1️⃣ 项目结构约定建议项目结构如下:

代码语言:javascript复制your_project/

├── CMakeLists.txt # CMake 配置文件

├── main.c # 源代码示例

└── build/ # 构建目录(建议 Out-of-Source)示例 main.c:

代码语言:javascript复制#include

int main() {

printf("Hello, CMake!\n");

return 0;

}示例 CMakeLists.txt:

代码语言:javascript复制cmake_minimum_required(VERSION 3.10)

project(HelloC C)

set(CMAKE_C_STANDARD 99)

set(CMAKE_C_STANDARD_REQUIRED ON)

add_executable(${PROJECT_NAME} main.c)2️⃣ 跨平台构建环境准备平台

推荐工具

Linux / macOS

gcc, clang, make, ninja

Windows (MinGW)

MinGW-w64,MSYS2,配置好环境变量(gcc, make)

3️⃣ 标准构建流程创建构建目录,进入:代码语言:javascript复制mkdir build

cd build配置项目Linux/macOS:代码语言:javascript复制cmake ..Windows + MinGW:代码语言:javascript复制cmake -G "MinGW Makefiles" ..编译项目:代码语言:javascript复制cmake --build .运行生成的可执行文件:Linux/macOS:代码语言:javascript复制./HelloCWindows:代码语言:javascript复制.\HelloC.exe4️⃣ 构建后目录结构示例Linux/macOS代码语言:javascript复制your_project/

├── CMakeLists.txt

├── main.c

└── build/

├── CMakeCache.txt

├── CMakeFiles/

├── Makefile

├── cmake_install.cmake

└── HelloCWindows + MinGW代码语言:javascript复制your_project/

├── CMakeLists.txt

├── main.c

└── build/

├── CMakeCache.txt

├── CMakeFiles/

├── Makefile

├── cmake_install.cmake

└── HelloC.exe5️⃣ 常用构建操作命令操作

命令示例

说明

构建项目

cmake --build .

自动调用构建工具

清理构建产物

cmake --build . --target clean

删除中间文件(非源码)

指定目标构建

cmake --build . --target HelloC

构建指定 target

使用 Ninja 构建系统

cmake -G "Ninja" ..

更快,需预装 Ninja

设置 Release 模式

cmake -DCMAKE_BUILD_TYPE=Release ..

仅适用于单配置生成器(非 Visual Studio)

6️⃣ 跨平台命令对照表操作

Linux/macOS

Windows (MinGW)

创建目录

mkdir build && cd build

mkdir build && cd build

配置

cmake ..

cmake -G "MinGW Makefiles" ..

编译

cmake --build .

cmake --build .

运行

./HelloC

.\HelloC.exe

清理

cmake --build . --target clean

cmake --build . --target clean

7️⃣ 注意事项与最佳实践Out-of-Source 构建:推荐单独构建目录,避免源码目录污染。工具链选择:Windows 推荐 MinGW 或 MSYS2 以使用 GNU 工具链。CMake 最低版本:建议 ≥ 3.10,兼容主流功能。设置 C 标准:代码语言:javascript复制set(CMAKE_C_STANDARD 99)

set(CMAKE_C_STANDARD_REQUIRED ON)生成器选择:Windows 下指定 -G "MinGW Makefiles",避免默认生成 Visual Studio 工程。清理构建:cmake --build . --target clean 清除构建产物,但保留缓存和构建文件。多配置生成器:Visual Studio 支持多配置,MinGW 和 Makefiles 是单配置。8️⃣ 总结CMake 构建流程简单且跨平台:

建议使用 Out-of-Source 构建运行 cmake 生成构建文件通过 cmake --build . 编译运行生成的程序通过合理配置和跨平台命令,CMake 方便地支持多操作系统和构建工具。

本节内容已经全部介绍完毕,希望通过这篇文章,大家对 CMake 有了更深入的理解和认识。感谢各位的阅读和支持,如果觉得这篇文章对你有帮助,请不要吝惜你的点赞和评论,这对我们非常重要。