优先用yum install cmake3而非yum install cmake,因CentOS 7默认cmake为2.8.12,不支持现代C++特性;cmake3是独立包,版本≥3.x,二者共存不冲突,但需先将YUM源切换至vault.centos.org并禁用已失效仓库。

cmake 在 CentOS 上安装,优先用 yum install cmake3,而不是 yum install cmake。因为 CentOS 7 默认仓库里的 cmake 是 2.8.12,早已不支持现代 C++ 项目(比如 target_link_libraries 的 PUBLIC/PRIVATE 语法、find_package 的 CONFIG 模式等),直接用会报错或静默降级失败。
为什么 cmake 和 cmake3 是两个包?
CentOS 7 官方仓库把旧版(2.8.x)保留为 cmake,新版(3.x)单独打包为 cmake3,二者不冲突、不覆盖。安装后:
-
cmake --version仍输出 2.8.12(除非你手动改了 PATH 或加了 alias) -
cmake3 --version输出 3.x(如 3.22.1) - 两者二进制文件路径不同:
/usr/bin/cmakevs/usr/bin/cmake3
这不是 bug,是 CentOS 的兼容性设计 —— 但对新项目来说,它就是个坑。
用 yum install cmake3 前必须修复 YUM 源
CentOS 7 已 EOL(2024 年 6 月终止支持),mirrorlist.centos.org 不再响应,直接运行 yum install cmake3 会卡住或报 404。
CMake 4.3.2 Windows x86_64 历史版本安装包,适合旧项目兼容、构建环境回退、CMakeLists.txt 迁移验证、Visual Studio/Ninja/Makefile 生成器测试和 C/C++ 项目维护。
你需要先切换到 vault 镜像源:
- 备份原配置:
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak - 编辑
/etc/yum.repos.d/CentOS-Base.repo,把所有baseurl=行改为:baseurl=https://vault.centos.org/7.9.2009/os/$basearch/(注意版本号 7.9.2009 要和你系统一致,可用cat /etc/centos-release确认) - 禁用已失效的 repo:
sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/CentOS-CR.repo /etc/yum.repos.d/CentOS-fasttrack.repo
之后运行 sudo yum clean all && sudo yum makecache,再试 yum install cmake3 才能成功。
源码编译安装 cmake 的关键绕坑点
如果你必须装更新的版本(比如 3.28+),不能只靠 yum,得自己编译。但别跳过这些检查:
- 必须装
openssl-devel:否则./bootstrap会报curl not found或 SSL 相关链接失败 -
./bootstrap后不要直接make:默认并发数太高,内存不足时会 OOM 中断;建议加-j$(nproc)或更保守的-j2 - 安装路径别用
/usr:和系统包管理器冲突,推荐--prefix=/usr/local,然后把/usr/local/bin加到$PATH开头 - 验证时别只跑
cmake --version:还要试cmake -E echo "test",确认基础命令行工具链可用
最常被忽略的是:编译完没清 build/ 目录就重跑 make,导致缓存残留、链接错误反复出现 —— 遇到奇怪的 undefined symbol,先 rm -rf build/ 再来。

















