本系列为《CMake 工程化进阶》完整 8 篇体系。本篇目标真正跑通 CMake 的完整构建流程。上一节我们讲清了编译器构建工具构建系统CMake 在工程中的位置这篇开始实战。我们只做一件事用 CMake 构建第一个 C 可执行程序。一、准备一个最小工程创建目录结构MyApp/ main.cpp CMakeLists.txtmain.cpp#include iostream int main() { std::cout Hello CMake! std::endl; return 0; }二、写第一个 CMakeLists.txtcmake_minimum_required(VERSION 3.15) project(MyApp) add_executable(app main.cpp)只有三行核心内容。解释一下1️⃣ cmake_minimum_requiredcmake_minimum_required(VERSION 3.15)指定最低 CMake 版本。这是规范写法必须写。2️⃣ project()project(MyApp)定义工程名称。它会初始化很多内部变量。3️⃣ add_executable()add_executable(app main.cpp)意思是构建一个名为 app 的可执行程序源文件是 main.cpp。三、正确的构建方式非常重要不要在源码目录直接运行 cmake。我们使用out-of-source build也就是源码和构建分离。第一步创建 build 目录mkdir build cd build第二步执行配置阶段cmake ..含义是读取上一级目录的 CMakeLists.txt生成构建文件你会看到-- Configuring done-- Generating done-- Build files have been written to: ...第三步构建推荐方式cmake --build .或者make第四步运行./app输出Hello CMake!四、CMake 构建的三阶段回顾现在你已经实际走了一遍CMakeLists.txt ↓ cmake .. Configure Generate ↓ cmake --build . ↓ app这就是完整闭环。五、Debug / Release 模式基础理解Linux 默认是单配置生成器。如果你想指定构建类型cmake -DCMAKE_BUILD_TYPERelease ..常见值DebugReleaseRelWithDebInfo查看当前类型cat CMakeCache.txt | grep CMAKE_BUILD_TYPE六、为什么推荐 cmake --build .因为它是跨平台写法。在 Windows 下cmake --build .会调用MSBuild或 Ninja而不是 make。这是推荐习惯。七、常见错误1️⃣ 在源码目录运行 cmake会污染目录。解决删除生成文件重新使用 build 目录。2️⃣ 修改 CMakeLists 后不生效CMake 有缓存机制。解决删除 build 目录重新 cmake。3️⃣ 找不到 g说明系统没有安装编译器。Linuxsudo apt install build-essentialMacxcode-select --install八、你现在掌握了什么虽然工程很小但你已经完成第一次 CMake 工程理解 build 分离理解 configure / generate / build 三阶段理解 add_executable这就是 CMake 的最小闭环。九、下一步下一篇我们将升级为多文件工程 include 机制解决最常见的错误“找不到头文件”这才是真正进入工程阶段。下一篇从单文件到多文件工程CMake 中的 include 机制与目录规范C 工程入门第三课