在 CentOS 系统中,CMake 是一个至关重要的开源工具,它用于管理和控制软件项目的编译过程,作为一个跨平台的自动化构建系统,CMake 能够生成标准的构建文件(如 Makefile 或 Ninja),使得开发者可以在不同操作系统上使用统一的构建流程,对于在 CentOS 上进行 C/C++ 开发的用户而言,安装一个合适版本的 CMake 是第一步,本文将详细介绍如何通过 yum
包管理器来安装 CMake,并探讨几种不同方法的优劣。
使用默认的 Base 仓库安装
这是最直接、最简单的方法,适用于对 CMake 版本要求不高的场景,CentOS 的官方基础仓库中通常包含了 CMake,但版本往往比较陈旧。
优点:
- 简单快捷:一条命令即可完成安装。
- 稳定可靠:来自官方仓库,经过了充分的测试,与系统兼容性好。
缺点:
- 版本陈旧:默认仓库中的 CMake 版本可能非常老(2.8.x),无法满足依赖新特性(如 C++17/20)的现代 CMakeLists.txt 文件的需求。
操作步骤:
更新 yum 缓存(可选但推荐):
sudo yum makecache
安装 CMake:
sudo yum install cmake
验证安装版本:
cmake --version
执行后,你可能会看到一个类似
cmake version 2.8.12.2
的输出。
启用 EPEL 仓库安装
EPEL (Extra Packages for Enterprise Linux) 是由 Fedora 社区维护的,为 RHEL 及其衍生版(如 CentOS)提供高质量软件包的附加仓库,EPEL 中的软件包版本通常比 Base 仓库要新。
优点:
- 版本较新:通常能提供一个比默认仓库更新的 CMake 版本(3.x 系列)。
- 易于管理:仍然使用
yum
进行安装、更新和卸载。
缺点:
- 非绝对最新:EPEL 的更新速度不如专门的开发工具集快,可能无法获取到最新的 CMake 版本。
操作步骤:
安装 EPEL 仓库:
sudo yum install epel-release
再次安装 CMake:
sudo yum install cmake
yum
会自动解析依赖,并从 EPEL 仓库中寻找更新的 CMake 版本进行安装或升级。验证安装版本:
cmake --version
你看到的版本号应该比方法一中的更高,
cmake version 3.17.5
。
使用 Software Collections (SCL) 安装最新版本
对于需要追踪 CMake 最新版本的开发者来说,SCL 是一个绝佳的选择,它允许你在不覆盖系统默认软件包的情况下,安装和使用多个版本的软件。
优点:
- 版本最新:可以获取到非常新的 CMake 版本,甚至与官方发布同步。
- 环境隔离:不影响系统自带的旧版本软件,通过
scl
命令按需启用新环境。
缺点:
- 使用稍复杂:每次使用新版本时,需要通过
scl enable
命令激活环境。
操作步骤(以 devtoolset-9
为例):
安装 SCL 仓库:
sudo yum install centos-release-scl
安装包含新版本 CMake 的工具集:
sudo yum install devtoolset-9
devtoolset-9
通常包含了 GCC 9 和一个较新的 CMake 3 版本。启用新的 Shell 环境:
scl enable devtoolset-9 bash
执行此命令后,你会进入一个新的 Bash 会话,
PATH
环境变量已被临时修改,cmake
命令将指向新安装的版本。验证安装版本:
cmake --version
在这个新的 Shell 中,你将看到
devtoolset-9
提供的 CMake 版本。
三种方法对比
安装方式 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
Base 仓库 | 操作最简单,系统自带 | 版本极度陈旧 | 运行老旧项目,对版本无要求 |
EPEL 仓库 | 版本较新,管理方便 | 无法获取绝对最新版 | 大多数日常开发和部署需求 |
SCL | 版本最新,环境隔离 | 使用时需手动激活环境 | 现代C++项目开发,需要最新特性 |
选择哪种安装方式取决于你的具体需求,如果你的项目只需要基础的构建功能,方法一足够,对于大多数开发者,推荐使用方法二(EPEL 仓库),它在易用性和版本新颖性之间取得了很好的平衡,如果你正在进行前沿的 C++ 开发,依赖 CMake 的最新功能,那么方法三(SCL) 是最可靠的选择,它既能让你使用最新工具,又能保持系统的稳定性。
相关问答 (FAQs)
我已经通过 EPEL 安装了新版本的 CMake,但为什么在终端输入 cmake --version
后,显示的还是旧版本?
答: 这个问题通常是由 PATH
环境变量的优先级引起的,当系统中有多个版本的 cmake
时,PATH
中靠前的目录会被优先执行,你可以通过 which cmake
命令来查看当前使用的是哪个路径下的 cmake
,如果显示的是旧版本路径(如 /usr/bin/cmake
),说明新版本可能安装在了另一个目录(如 /usr/local/bin/cmake
),但该目录在 PATH
中的顺序靠后,你可以通过修改 ~/.bash_profile
或 ~/.bashrc
文件,将包含新版本的目录路径添加到 PATH
的最前面,然后重新登录或执行 source ~/.bashrc
使其生效。
我可以不使用 yum
,而是直接从 CMake 官网下载源码编译安装吗?
答: 当然可以,从源码编译安装是获取绝对最新版本的终极手段,它的优点是完全可控,可以自定义编译选项,但缺点也很明显:过程繁琐,需要手动解决依赖关系(如 OpenSSL、curl 等),耗时较长,且无法通过 yum
进行统一的管理和更新,对于生产环境或追求系统整洁性的用户,建议优先使用 yum
或类似的管理工具,只有在官方仓库确实无法满足版本需求,且你对系统管理有足够信心时,才考虑编译安装。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复