CMake安装后不能直接编译代码,仅生成构建文件(如Makefile),需配合make等工具完成编译;验证安装执行cmake --version,成功显示版本号即为正常;最简流程为:编写三行CMakeLists.txt、在源码目录执行cmake .生成构建文件、再运行make编译。

cmake 安装完不能直接编译代码,它只负责生成构建系统(比如 Makefile),真正编译还得靠 make 或其他构建工具。别急着写复杂项目,先跑通一个最简流程。
确认安装成功并检查版本
终端里执行:cmake -version。如果返回类似 cmake version 3.22.1,说明已装好;若提示 command not found,大概率是没进 $PATH —— 检查安装路径(如 /usr/local/bin 或 /opt/cmake/bin),手动加到 shell 配置里(~/.bashrc 或 ~/.zshrc),然后 source 一下。
从空目录开始:三行 CMakeLists.txt 就够了
别套模板,新建一个文件夹,放两个文件:
-
main.cpp(或main.c):随便写个printf("ok\n"); -
CMakeLists.txt:内容严格按这三行(注意空格和括号):cmake_minimum_required(VERSION 3.10) project(hello) add_executable(hello main.cpp)
关键点:project() 名字和 add_executable() 第一个参数(可执行文件名)可以不同,但后者决定最终生成的二进制名;VERSION 3.10 是底线,低于这个版本很多现代语法不支持。
运行 cmake . 之前必须 cd 到含 CMakeLists.txt 的目录
cmake 默认只在当前目录找 CMakeLists.txt,不会递归向上搜索。常见错误:
- 在父目录执行
cmake ./src→ 报错Cannot open project file(它去./src里找,但没找到) - 误输成
cmake ..却站在错误位置 → 找错CMakeLists.txt,甚至覆盖别的项目缓存 - 没清缓存就改
CMakeLists.txt→cmake .可能不生效,因为CMakeCache.txt锁住了旧配置
稳妥做法:进目标目录,执行 rm -f CMakeCache.txt CMakeFiles/,再 cmake .。
make 编译失败时优先看 CMake 的输出,不是 make 的报错
cmake . 成功后会打印类似 -- Build files have been written to: /path/to/dir;如果卡住或报错(比如 Could NOT find CXX compiler),说明环境缺编译器,不是代码问题。此时:
- Linux:确认装了
g++或clang++,which g++应有输出 - macOS:装 Xcode Command Line Tools(
xcode-select --install) - Windows + MinGW:确保
mingw32-g++.exe在%PATH%里 - 不要跳过
cmake .直接make—— 没Makefile肯定失败
真正要盯住的是 cmake 这一步的输出,它决定了后续能不能走通。很多人卡在这儿,却去查 main.cpp 语法,白费时间。
CMake 的核心动作就两步:cmake 生成构建文件,make 执行构建。中间任何环节出问题,先回到这两步的输入和输出本身,而不是一头扎进语法细节。


















