Ubuntu/Linux 升级 CMake 版本

Posted iBlackAngel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu/Linux 升级 CMake 版本相关的知识,希望对你有一定的参考价值。

Ubuntu/Linux 升级 CMake 版本

背景

在 Ubuntu 18.04 系统上默认的 CMake 版本为 3.10.2,当需要进行一些比较新的项目的编译时,比如说 iceoryx 的交叉编译,会遇到 CMake 版本不支持问题。类似下面的打印:

CMake Error at CMakeLists.txt:17 (cmake_minimum_required):
  CMake 3.16 or higher is required.  You are running version 3.10.2

这时我们需要升级系统中的 CMake,从 3.10.2 升级到 3.16+ 版本。

解决方案

CMake 网站的 Download 页面 Alternative Binary Releases 列表中提供了 Kitware’s Ubuntu packages 可替换的 APT 仓库 https://apt.kitware.com/。在 https://apt.kitware.com/ 网址中是 Kitware 维护的 CMake 可替换版本,根据网站提示选择合适的系统进行更新。

以下步骤可参考 apt.kitware.com 进行操作:

  1. 如果您使用的是最小 Ubuntu 镜像或 Docker 镜像,则可能需要安装以下软件包:

    sudo apt-get update
    sudo apt-get install -y gpg wget
    
  2. 获取 Kitware 的签名密钥副本:

    wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
    
  3. 将存储库添加到源列表并更新。

    Ubuntu Jammy Jellyfish (22.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    

    Ubuntu Focal Fossa (20.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    

    Ubuntu Bionic Beaver (18.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    
  4. 安装 kitware-archive-keyring 软件包,以确保您的钥匙环在我们轮循钥匙时保持最新:

    sudo rm /usr/share/keyrings/kitware-archive-keyring.gpg
    sudo apt-get install kitware-archive-keyring
    
  5. 作为可选步骤,如果您想订阅除生产版本之外的候选版本,可以将我们的候选版本存储库添加到您的源中。

    Ubuntu Jammy Jellyfish (22.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy-rc main' | sudo tee -a /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    

    Ubuntu Focal Fossa (20.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal-rc main' | sudo tee -a /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    

    Ubuntu Bionic Beaver (18.04):

    echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic-rc main' | sudo tee -a /etc/apt/sources.list.d/kitware.list >/dev/null
    sudo apt-get update
    

    请注意,如果您添加了候选版本存储库,您仍然需要添加主存储库,因为候选版本存储存储库本身不提供生产版本。

  6. 现在,您可以从我们的 APT 存储库安装任何软件包。例如,尝试安装 cmake 包:

    sudo apt install -y cmake
    

提示:使用 Synaptic 工具查看待更新的 cmake 版本,关于 Synaptic 的使用可参考「Ubuntu 软件包管理利器 - 新立得 (Synaptic)」。

版本验证

安装 CMake 包之后,可以通过 cmake --version 命令查看版本信息。

$ cmake --version
cmake version 3.25.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

欢迎关注我的公众号:飞翔的小黄鸭
也许会发现不一样的风景


△ \\triangle 交叉编译 iceoryx

linux 下CMake如何升级?(安装指定版本cmake)

先把当前版本全卸载

# sudo apt remove cmake
# sudo apt purge --auto-remove cmake

然后到cmake官网下载指定.sh版本

https://cmake.org/files/

我i下这个

下完后复制到虚拟机里

终端运行

sudo ./cmake-3.8.0-Linux-x86_64.sh --skip-license --exclude-subdir --prefix=/usr/local

如果提示没权限就赋予777权限

详细指令:

root@ubuntu:/home/yg/share# ./cmake-3.8.0-Linux-x86_64.sh --skip-license --exclude-subdir --prefix=/usr/local
bash: ./cmake-3.8.0-Linux-x86_64.sh: 权限不够
root@ubuntu:/home/yg/share# 
root@ubuntu:/home/yg/share# 
root@ubuntu:/home/yg/share# chmod 777 cmake-3.8.0-Linux-x86_64.sh 
root@ubuntu:/home/yg/share# 
root@ubuntu:/home/yg/share# 
root@ubuntu:/home/yg/share# 
root@ubuntu:/home/yg/share# ./cmake-3.8.0-Linux-x86_64.sh --skip-license --exclude-subdir --prefix=/usr/local
CMake Installer Version: 3.8.0, Copyright (c) Kitware
This is a self-extracting archive.
The archive will be extracted to: /usr/local

Using target directory: /usr/local
Extracting, please wait...

Unpacking finished successfully
root@ubuntu:/home/yg/share# 
root@ubuntu:/home/yg/share# 
root@ubuntu:/home/yg/share# 

测试版本:

root@ubuntu:/home/yg/share# cmake --version
cmake version 3.8.0

CMake suite maintained and supported by Kitware (kitware.com/cmake).

参考文章:如何指定在Ubuntu中安装CMake的位置?

以上是关于Ubuntu/Linux 升级 CMake 版本的主要内容,如果未能解决你的问题,请参考以下文章

一行命令轻松升级 Ubuntu | Linux 中国

linux 下CMake如何升级?(安装指定版本cmake)

ubuntu中cmake版本升级

cmake 版本升级

CentOS7 升级 cmake

蓝桥ROS之 cmake gcc g++ 默认版本和升级