2、环境搭建:在 Windows/Linux/macOS 上安装 CMake,验证安装,第一个 Hello World 项目
2.1 为什么我要先聊环境搭建?
说实话,很多初学者一上来就急着写 CMakeLists.txt,结果编译报错半天,最后发现是 CMake 没装对。我当年就吃过这个亏——在 Windows 上折腾了俩小时,才发现 PATH 环境变量没配好。
所以这一章,咱们先把地基打牢。你想想看,如果连 cmake --version 都跑不通,后面再花哨的语法都是白搭。
2.2 各平台安装方式
2.2.1 Windows 安装
Windows 上安装 CMake 其实最省心。我个人习惯直接去官网下载安装包:
- 访问
https://cmake.org/download/ - 找到 Windows x64 Installer,下载 .msi 文件
- 双击安装,关键一步来了——记得勾选「Add CMake to the system PATH for all users」
安装完成后,打开命令提示符(cmd)或 PowerShell,输入:
cmake --version
如果看到类似 cmake version 3.28.1 的输出,恭喜你,成了。
2.2.2 Linux 安装
Linux 上安装 CMake 就一句话的事。不过不同发行版命令略有区别:
| 发行版 | 命令 |
|---|---|
| Ubuntu/Debian | sudo apt install cmake |
| CentOS/RHEL | sudo yum install cmake |
| Fedora | sudo dnf install cmake |
| Arch Linux | sudo pacman -S cmake |
但这里有个问题——系统自带的 CMake 版本往往比较老。比如 Ubuntu 20.04 默认装的是 3.16 版,而有些新特性需要 3.20+。怎么办?
我建议用 Kitware 官方 APT 仓库:
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add -
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main'
sudo apt update
sudo apt install cmake
嗯,这样就能拿到最新版了。
2.2.3 macOS 安装
macOS 用户就幸福了。我个人最推荐用 Homebrew:
brew install cmake
一行命令搞定。如果你没有 Homebrew,也可以去官网下载 .dmg 安装包,或者用 MacPorts:
sudo port install cmake
验证方式一样:
cmake --version
2.3 验证安装:不止是看版本号
很多人验证安装就只跑个 cmake --version,觉得够了。其实不然。我建议你再做两件事:
- 检查生成器是否可用:
cmake --help会列出所有支持的生成器。Windows 上应该有Visual Studio 17 2022、Ninja等;Linux/macOS 上应该有Unix Makefiles。 - 测试一个最小项目:这才是真正的「验证安装」。光有 cmake 命令,但编译链配不上,等于白装。
cmake -G "MinGW Makefiles" 指定生成器。我经常在同一个项目里切换生成器来测试兼容性。
2.4 第一个 Hello World 项目
好了,环境搭好了,咱们来写第一个 CMake 项目。说白了,就是让 CMake 帮我们编译一个打印 "Hello World" 的 C++ 程序。
2.4.1 项目结构
创建一个文件夹,比如叫 hello_cmake,里面放两个文件:
hello_cmake/
├── CMakeLists.txt
└── main.cpp
2.4.2 编写源代码
main.cpp 内容很简单:
#include <iostream>
int main() {
std::cout << "Hello World from CMake!" << std::endl;
return 0;
}
2.4.3 编写 CMakeLists.txt
这是核心。咱们先写一个最简版本:
cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
add_executable(hello main.cpp)
解释一下这三行:
- cmake_minimum_required:指定最低 CMake 版本。我习惯写 3.10,因为大部分旧系统都支持。
- project:定义项目名称。这里叫 HelloWorld。
- add_executable:告诉 CMake 要生成一个可执行文件,名字叫 hello,源文件是 main.cpp。
cmakelists.txt,结果 CMake 根本认不出来。
2.4.4 构建与运行
在项目根目录下执行:
mkdir build
cd build
cmake ..
cmake --build .
为什么要有 build 目录?这叫「外部构建」。你想想看,如果所有临时文件都混在源码目录里,那得多乱。我早期项目就是直接在源码目录里跑 cmake,结果 .o 文件和 .cpp 文件混在一起,想删都分不清。
构建成功后,运行:
- Linux/macOS:
./hello - Windows:
.\Release\hello.exe或.\Debug\hello.exe(取决于构建配置)
你应该会看到:
Hello World from CMake!
2.5 内联流程图:CMake 构建流程
为了让你更直观地理解整个过程,我画了个简单的流程图:
2.6 常见问题与避坑
我整理了几个新手最容易碰到的问题:
| 问题 | 原因 | 解决方案 |
|---|---|---|
CMake Error: CMake was unable to find a build program |
没有安装编译器(如 g++、Visual Studio) | 安装对应编译器,或指定生成器 -G "Unix Makefiles" |
CMake Error: The source directory does not appear to contain CMakeLists.txt |
路径写错了,或者文件名大小写不对 | 检查当前目录和文件名 |
Windows 上 cmake .. 报错找不到编译器 |
没有打开 Visual Studio 开发者命令提示符 | 用「Developer Command Prompt for VS 2022」运行 |
-G "Visual Studio 17 2022" 显式指定。
2.7 小结
这一章咱们干了三件事:
- 在三大主流系统上装好了 CMake
- 验证了安装是否真的可用
- 跑通了第一个 Hello World 项目
你想想看,从零到能跑出 "Hello World",其实就几步。但这一步迈出去,后面的路就好走了。下一章咱们会深入 CMakeLists.txt 的语法,到时候你会发现——原来 CMake 还能这么玩。