应优先使用官网二进制包安装cmake至用户目录,避免sudo和系统污染;因ubuntu 22.04自带cmake 3.22不支持3.27+新语法,apt安装易导致编译失败,而官网包静态链接、版本明确、无需root且适配ci/docker。

直接装 sudo apt install cmake 很可能编译失败——不是项目有问题,而是你装的版本太老,不支持 FetchContent_Declare 或 cmake_language 这类新语法。
怎么确认当前 cmake 是不是真能用
别只信 which cmake,它只告诉你命令在哪,不告诉你能不能用。必须手动验证:
- 运行
cmake --version:如果报command not found,说明根本没装;如果版本 ≤ 3.22(比如 Ubuntu 22.04 自带的 3.22),而项目里写了cmake_minimum_required(VERSION 3.27),那就必然失败 - 运行
type -a cmake查是否有多个版本共存(例如/usr/bin/cmake和$HOME/cmake/bin/cmake) - 运行
ls -l $(which cmake)看软链实际指向哪个路径,避免误以为在用新版,其实还是系统旧版
为什么推荐官网二进制包而不是 apt/dnf
Ubuntu/Debian 老系统(18.04/20.04)apt 源里的 cmake 是 3.10 或 3.16;22.04 是 3.22;而 2025 年后主流 C++ 项目普遍要求 ≥ 3.27。包管理器更新滞后,且升级需 sudo,容易污染系统路径。
- 官网二进制包是静态链接的,不依赖系统库,
./cmake-3.29.2-linux-x86_64.sh --prefix=$HOME/cmake一行就能装到用户目录 - 不用
sudo,不改/usr,CI、Docker、日常开发都干净可控 - 千万别用
curl -sSL https://cmake.org/install/ | sh—— 这个脚本已停更,可能拉到过期或不可信内容
安装步骤(实操级)
以 v3.29.2 为例,全程无 root 权限:
- 下载:
wget https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-linux-x86_64.sh - 加执行权:
chmod +x cmake-3.29.2-linux-x86_64.sh - 安装到用户目录:
./cmake-3.29.2-linux-x86_64.sh --prefix=$HOME/cmake --skip-license - 加入 PATH:
echo 'export PATH=$HOME/cmake/bin:$PATH' >> ~/.bashrc && source ~/.bashrc - 验证:
which cmake应返回/home/xxx/cmake/bin/cmake,cmake --version显示 3.29.2
最常被忽略的点:装完必须 source ~/.bashrc(或重启终端),否则 shell 还在用旧路径;另外,某些 IDE(如 VS Code 的 CMake Tools)会缓存 cmake 路径,装完要重启 IDE 才生效。











