You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下不卸载系统CMake额外安装高版本CMake的方案问询

该需求完全可以实现,以下提供两种适配不同场景的操作方案:

方案1:使用update-alternatives管理多版本CMake(和管理gcc的逻辑完全一致)

适合需要频繁在不同CMake版本间切换的场景,操作步骤如下:

  • 下载对应版本的CMake预编译二进制包(无需源码编译,节省时间,建议选择linux-x86_64.tar.gz格式的官方预编译包)
  • 将压缩包解压到非系统默认路径,比如/opt/cmake目录:
sudo mkdir -p /opt/cmake
sudo tar zxf cmake-3.20.0-linux-x86_64.tar.gz -C /opt/cmake
  • 将高版本CMake加入update-alternatives管理列表:
sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake/cmake-3.20.0-linux-x86_64/bin/cmake 100
sudo update-alternatives --install /usr/bin/ccmake ccmake /opt/cmake/cmake-3.20.0-linux-x86_64/bin/ccmake 100
sudo update-alternatives --install /usr/bin/cpack cpack /opt/cmake/cmake-3.20.0-linux-x86_64/bin/cpack 100
sudo update-alternatives --install /usr/bin/ctest ctest /opt/cmake/cmake-3.20.0-linux-x86_64/bin/ctest 100
  • 切换版本时执行以下命令,选择对应版本编号即可:
sudo update-alternatives --config cmake

默认选择系统自带的3.10.2版本即可保证ROS环境正常运行,需要用高版本时手动切换即可。

方案2:仅针对单个编译任务临时指定高版本CMake(更适配当前场景,无全局影响)

如果你只需要编译这一个特定库时用高版本CMake,不需要频繁切换版本,可以选择该方案,完全不会修改系统全局配置,不会对ROS环境产生任何影响:

  • 同样先下载高版本CMake预编译包,解压到任意路径,比如当前用户的home目录下的工具文件夹:~/tools/cmake-3.20.0-linux-x86_64
  • 编译该库时,直接调用高版本CMake的绝对路径即可,后续编译步骤不变:
# 进入你的源码编译目录后执行
~/tools/cmake-3.20.0-linux-x86_64/bin/cmake ..
make

如果是编译ROS工作空间的包,用catkin_make时也可以直接指定CMake路径:

catkin_make -DCMAKE_PROGRAM_PATH=~/tools/cmake-3.20.0-linux-x86_64/bin

注意:不要卸载系统自带的cmake包,ROS大量核心组件依赖系统默认cmake版本,卸载后会导致ROS功能异常,上述两种方案均可完全避免该问题。

内容的提问来源于stack exchange,提问作者Oroshimaru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:24:03