2、CMake安装:在Linux(Ubuntu/CentOS)和Windows上安装CMake,验证安装
好,咱们正式开始动手了。这一章我带你把CMake装到机器上。别小看这一步,我见过太多人卡在安装环节——版本不对、路径混乱、权限不够……说白了,环境没搭好,后面全是坑。
我个人习惯是:先确认系统,再选安装方式,最后做验证。三步走,稳得很。
2.1 在Ubuntu上安装CMake
Ubuntu用户最幸福,apt一键搞定。但这里有个细节——apt仓库里的版本往往偏旧。我在项目中遇到过,用apt装了个3.16,结果同事的CMakeLists.txt里用了3.20的语法,编译直接报错。你说冤不冤?
2.1.1 使用apt安装(适合快速上手)
# 更新包索引
sudo apt update
# 安装CMake
sudo apt install cmake
# 验证版本
cmake --version
嗯,这里要注意:如果你只是做简单练习,apt版本够用。但做交叉编译,我建议你往下看。
2.1.2 从源码安装(推荐,版本可控)
为什么要从源码装?因为交叉编译经常需要特定版本的CMake,比如某些工具链只支持3.20以上。我曾经被这个坑过——折腾了两天,最后发现是CMake版本太低,不认识新的工具链文件语法。
# 1. 卸载旧版本(如果有)
sudo apt remove cmake
# 2. 下载源码(以3.28.0为例)
wget https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0.tar.gz
# 3. 解压
tar -zxvf cmake-3.28.0.tar.gz
cd cmake-3.28.0
# 4. 配置、编译、安装
./bootstrap
make -j$(nproc)
sudo make install
# 5. 验证
cmake --version
sudo make install 覆盖系统路径。我习惯装到 /opt/cmake-3.28,然后软链接到 /usr/local/bin。这样切换版本时,改个链接就行。
2.2 在CentOS上安装CMake
CentOS用户要注意,yum仓库里的CMake版本更老。我记得CentOS 7默认还是3.6.x,那都是2016年的东西了。你想想看,现在都2025年了,差了多少个版本?
2.2.1 使用yum安装
# 安装EPEL源(Extra Packages for Enterprise Linux)
sudo yum install epel-release
# 安装CMake
sudo yum install cmake
# 验证
cmake --version
2.2.2 从源码安装(CentOS同样适用)
步骤和Ubuntu一样,只是依赖包名不同:
# 安装编译依赖
sudo yum install gcc gcc-c++ make openssl-devel
# 然后执行和Ubuntu相同的源码安装步骤
# 下载、解压、bootstrap、make、make install
2.3 在Windows上安装CMake
Windows下安装最简单,但有个坑——环境变量。我帮同事排查过,装完CMake后命令行敲不了,就是因为安装时没勾选「Add CMake to system PATH」。
2.3.1 使用安装包安装
- 访问 https://cmake.org/download/
- 下载
cmake-3.28.0-windows-x86_64.msi - 双击安装,务必勾选「Add CMake to the system PATH for all users」
- 安装完成后,打开命令提示符验证:
cmake --version
右键「此电脑」→ 属性 → 高级系统设置 → 环境变量 → 在Path中添加
C:\Program Files\CMake\bin
2.3.2 使用包管理器安装(推荐)
如果你用Windows开发,我强烈建议装个包管理器。用scoop或chocolatey,一行命令搞定:
# 使用scoop
scoop install cmake
# 使用chocolatey
choco install cmake
这样做的好处是:升级方便,卸载干净,不会污染系统。我个人现在Windows开发全用scoop管理工具链。
2.4 验证安装是否成功
装完了,怎么知道好不好使?我一般做三件事:
2.4.1 检查版本
cmake --version
输出应该类似:
cmake version 3.28.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
2.4.2 运行一个最小示例
创建一个测试目录,写个最简单的CMakeLists.txt:
# 创建目录
mkdir cmake_test
cd cmake_test
# 创建CMakeLists.txt
echo "cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
add_executable(hello main.cpp)" > CMakeLists.txt
# 创建main.cpp
echo '#include <iostream>
int main() {
std::cout << "CMake works!" << std::endl;
return 0;
}' > main.cpp
# 构建
mkdir build && cd build
cmake ..
make
./hello
如果输出 CMake works!,恭喜你,环境搭好了。
2.4.3 检查生成器
交叉编译时,生成器很重要。用这个命令看看你的CMake支持哪些:
cmake --help
你会看到类似这样的列表:
| 生成器名称 | 适用平台 |
|---|---|
| Unix Makefiles | Linux/macOS |
| Ninja | 跨平台(推荐) |
| Visual Studio 17 2022 | Windows |
| MinGW Makefiles | Windows (MinGW) |
2.5 常见问题与避坑
- 「找不到cmake命令」:多半是环境变量没配好。检查PATH里有没有CMake的bin目录。
- 「版本太旧」:apt/yum装的版本不够新。用源码安装或者添加Kitware的官方APT仓库。
- 「编译报错:找不到库」:源码安装时缺少依赖。Ubuntu需要
libssl-dev,CentOS需要openssl-devel。
我曾经在CentOS上折腾了一下午,就是因为没装openssl-devel,bootstrap阶段一直报错。后来查了日志才发现——嗯,这种基础依赖问题,遇过一次就记住了。
好,这一章就到这里。CMake装好了,下一章我们开始聊「怎么用它来管理项目」。到时候我会带你写第一个真正的CMakeLists.txt,把交叉编译的架子搭起来。