最简CMakeLists.txt只需三行:cmake_minimum_required(VERSION 3.10)、project(Hello LANGUAGES CXX)、add_executable(Hello src/main.cpp),配合外部构建目录(mkdir build && cd build && cmake .. && cmake --build .)完成Hello World编译运行。

装完 cmake 后,直接跑项目是不行的——它不编译代码,只生成构建系统(比如 Makefile 或 Ninja 配置)。第一个项目必须手写一个最小可用的 CMakeLists.txt,再分两步走:配置(cmake)+ 构建(cmake --build)。
怎么写最简 CMakeLists.txt?
三行足够跑通 Hello World。别加多余内容,否则容易因版本或语法报错:
-
cmake_minimum_required(VERSION 3.10):低于 3.10 的旧系统才需要调低,新环境建议用3.15或更高 -
project(Hello LANGUAGES CXX):项目名不能含空格或特殊字符;LANGUAGES CXX表示用 C++,写 C 就改成C -
add_executable(Hello src/main.cpp):可执行文件名(第一个参数)和源文件路径(第二个参数)必须明确,路径是相对于CMakeLists.txt所在目录的
常见错误:add_executable 指定的源文件不存在、路径写成绝对路径、项目名和可执行文件名相同但大小写不一致(Linux 下敏感)。
为什么不能在源码目录里直接 cmake?
因为 cmake 会往当前目录写一堆中间文件(CMakeCache.txt、CMakeFiles/),污染源码树。正确做法是创建独立构建目录:
组合式C++代码评审方案,融合静态分析、AI推理、多轮迭代评审和C++专项检查,适用于PR审查、增量代码审查、全项目评审和代码质量评分,触发词包括review cpp、cpp代码评审、C++review、代码审查。
- 在项目根目录下运行
mkdir build && cd build - 再执行
cmake ..(注意最后两个点,表示上层目录的CMakeLists.txt) - 如果提示
Could not find compiler set in environment variable CC,说明没装gcc或g++,先运行sudo apt install build-essential(Ubuntu/Debian)
Windows 用户若用 VS 工具链,要显式指定生成器:cmake -G "Visual Studio 17 2022" ..,否则默认可能选错。
cmake 配置成功后怎么编译运行?
配置只是生成构建系统,还没真正编译。下一步必须用 cmake --build(不是 make):
- 仍在
build/目录下,运行cmake --build .(点代表当前目录) - 成功后可执行文件出现在
build/Hello(Linux/macOS)或build/Debug/Hello.exe(Windows + VS) - 直接运行:
./Hello(Linux/macOS)或Debug\Hello.exe(Windows)
别用 make 或 ninja 直接调用——虽然底层可能是它们,但 cmake --build 是跨平台统一接口,能自动适配不同生成器,避免手动记命令。
最容易被忽略的是构建目录的隔离性:很多人把 build/ 建在 src/ 里面,或者反复在源码根目录跑 cmake 导致缓存残留;一旦 CMakeLists.txt 改了,必须删掉整个 build/ 重来,而不是只改几行就指望增量生效。

















