ubuntu上安装cmake无唯一标准答案:普通开发用apt install cmake(22.04默认3.22.1,24.04默认3.28.3);需≥3.20且省心选kitware官方apt仓库;精确版本或离线部署才用预编译包或源码编译。

cmake 在 Ubuntu 上安装不是“只有一种标准答案”,而是取决于你要什么版本、是否要长期维护、有没有 root 权限、是否在 CI 或受限环境里运行。直接说结论:普通开发用 apt install cmake 就够了;项目明确要求 ≥3.20 且你不想折腾,优先走 Kitware 官方 APT 仓库;需要精确控制版本(比如 v3.23.0)或离线部署,才考虑预编译包或源码编译。
用 apt install cmake 装的是哪个版本?
Ubuntu LTS 发行版自带的 cmake 版本是锁死的:Ubuntu 22.04 是 3.22.1,Ubuntu 24.04 是 3.28.3。这不是“旧”,而是稳定交付版本——多数 C++ 项目(包括 ROS 2 Humble/Foxy、OpenCV 4.x、most CMakeLists.txt 用到的语法)完全兼容。
常见错误现象:cmake --version 输出 3.16.3(Ubuntu 20.04 默认)但项目 CMakeLists.txt 开头写了 cmake_minimum_required(VERSION 3.20) ——这时才需要升级,否则直接报错。
- 别为“最新”而升级:3.22+ 已支持
target_sources()、FetchContent_Declare()、基本的CXX_STANDARD自动推导 - 如果只是跑别人项目,先看它
CMakeLists.txt第一行再决定要不要动系统cmake -
sudo apt install cmake后不用改PATH,它装在/usr/bin/cmake,和系统工具链一致
Kitware 官方 APT 仓库怎么加?
这是最省心的“新版方案”,适用于 Ubuntu 20.04/22.04/24.04,由 Kitware 直接维护,更新及时、签名可信、可 apt upgrade 自动更新。
关键点在于发行版代号必须匹配:Ubuntu 24.04 是 noble,不是 bionic 或 focal——填错会导致 apt update 报 404。
- 加密密钥命令(2026 年仍有效):
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add - - 添加源(以 Ubuntu 24.04 为例):
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ noble main' - 更新并安装:
sudo apt update && sudo apt install cmake - 验证:
cmake --version应该输出类似3.29.2(Kitware 每季度发版)
容易踩的坑:apt-key add 在新 Ubuntu 中已被弃用,但 Kitware 当前仍依赖它;若遇到 command not found,说明你的系统已移除 apt-key,此时应改用 gpg 导入(需额外步骤),不如直接换预编译包。
CMake 4.3.2 Windows x86_64 历史版本安装包,适合旧项目兼容、构建环境回退、CMakeLists.txt 迁移验证、Visual Studio/Ninja/Makefile 生成器测试和 C/C++ 项目维护。
下载预编译二进制包(.tar.gz)怎么用?
适合无 root 权限、CI 构建、Docker 多阶段构建、或需要固定版本(如 v3.23.0)的场景。不污染系统 /usr,靠 PATH 切换。
官网下载地址固定格式:https://github.com/Kitware/CMake/releases/download/v3.23.0/cmake-3.23.0-linux-x86_64.tar.gz ——注意路径里是 linux-x86_64,不是 Linux-x86_64 或其他大小写变体,否则 404。
- 解压后不要直接
sudo cp -r bin/* /usr/local/bin:这会覆盖系统cmake,且下次apt upgrade可能冲突 - 推荐做法:解压到
$HOME/.local/cmake-3.23.0,然后在 shell 配置里加export PATH="$HOME/.local/cmake-3.23.0/bin:$PATH" -
cmake二进制包自带所有依赖(包括 zlib、curl、ssl),不依赖系统 OpenSSL 版本,这点比源码编译更可靠 - 验证:
which cmake应指向你放的位置,cmake --version显示目标版本
源码编译安装为什么经常失败?
不是不能用,而是没必要——除非你要打补丁、开 ENABLE_NINJA、或调试 cmake 本身。90% 的编译失败源于依赖缺失或路径权限问题。
典型错误信息:configure: error: cannot run C compiled programs. 或 bootstrap: error while loading shared libraries: libssl.so.3: cannot open shared object file。
- 必须装全依赖:
sudo apt install build-essential libssl-dev libcurl4-openssl-dev zlib1g-dev(libssl-dev不够,libcurl4-openssl-dev和zlib1g-dev也常缺) -
./bootstrap是必须步骤(替代老版的./configure),它检查环境并生成Makefile;跳过会直接报错 -
sudo make install默认装到/usr/local/bin,若该目录不可写,会失败;可用./bootstrap --prefix=$HOME/.local改路径 - 编译耗时长(v3.28+ 常 >5 分钟),
make -j$(nproc)不一定更快——内存不足时反而卡死,-j4更稳
真正麻烦的不是编译过程,而是后续卸载:没有 make uninstall,只能手动删 /usr/local/bin/cmake* 和 /usr/local/share/cmake*,还可能残留 .cmake 文件。










