如何在 Ubuntu 中升级 cmake

Wol*_*olf 89 cmake

CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
  CMake 3.6.0 or higher is required.  You are running version 3.5.1
-- Configuring incomplete, errors occurred!
Run Code Online (Sandbox Code Playgroud)

我知道 Ubuntu 使用它可以支持的稳定版本,但一些存储库需要更高版本的 cmake。我想用更高版本的 cmake 覆盖旧的 cmake,但是普通的 PPA 没有携带我需要的 cmake。如何在不与旧版本冲突的情况下升级 cmake 以使用所需版本?

Wol*_*olf 105

警告-不要做第2步,如果你有机器人操作系统(ROS)安装

  1. 检查您当前的版本:

    cmake --version
    
    Run Code Online (Sandbox Code Playgroud)
  2. 卸载它:

    sudo apt remove cmake
    
    Run Code Online (Sandbox Code Playgroud)
  3. 访问https://cmake.org/download/并下载最新的 bash 脚本。

    • 在我的情况下cmake-3.6.2-Linux-x86_64.sh就足够了。
  4. 将脚本复制到/opt/.

  5. 使脚本可执行:

    chmod +x /opt/cmake-3.*your_version*.sh
    
    Run Code Online (Sandbox Code Playgroud)
  6. 更改到所需的安装目录(/opt/例如)

    • 从 cmake 3.10.2 开始,安装程序似乎不再/opt默认安装
  7. 跑:

    sudo bash /opt/cmake-3.*your_version*.sh
    
    Run Code Online (Sandbox Code Playgroud)

    您需要按y两次。

  8. 该脚本将二进制文件安装到/opt/cmake-3.*your_version*so 为了获取cmake命令,请创建一个符号链接:

    sudo ln -s /opt/cmake-3.*your_version*/bin/* /usr/local/bin
    
    Run Code Online (Sandbox Code Playgroud)
  9. 使用以下方法测试您的结果:

    cmake --version
    
    Run Code Online (Sandbox Code Playgroud)

  • 正如 Matt 所观察到的,**如果您是 ROS 用户,请勿运行“REMOVE CMAKE”** 运行此命令将删除当前的 cmake 版本,但也会删除部分 ROS 发行版,破坏所有内容并迫使您重新安装与 ROS 相关的一切。应该向此命令添加警告,或者至少主要答案应该包括更新 cmake 的方法,而不是删除和替换。 (17认同)
  • ROS……“机器人操作系统”? (15认同)
  • 从 cmake 3.10.2 开始,安装程序似乎不再默认安装到 `/opt` 而是安装到当前目录,因此需要用户相应地修改步骤 6。 (11认同)
  • 不要认为你需要卸载旧的 `cmake`,因为 `/usr/local/bin` 在 `PATH` 中排在 `/usr/bin` 之前。所以一旦你在最后一步创建了符号链接,`cmake` 命令将调用你的新 `cmake` 而不是旧的。 (8认同)
  • 我做了所有这些,但是一旦我输入 cmake --version 它说没有找到命令 Cmake :( (5认同)
  • 以防万一其他人犯同样的错误:在最后一步提供 CMake 二进制文件的**完整路径**到符号链接。否则 bash 仍然找不到文件。 (4认同)
  • @Cs20 对于同样的问题,我不得不在 Ubuntu 16.04 上执行 `sudo ln -s /usr/local/bin/cmake /usr/bin/cmake`。 (2认同)

小智 46

在新版本的 cmake(例如:3.9.6)中,要安装,请从https://cmake.org/download/下载 tar 文件。解压下载的 tar 文件,然后:

cd $CMAKE_DOWNLOAD_PATH
./configure
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个解决方案,因为它可以说是解决问题的最纯粹的方法。(只需构建软件即可。)无需使用 PPA 或其他任何东西。谢谢! (3认同)
  • 首先必须安装 OpenSSL 才能使其工作:“sudo apt-get install libssl-dev” (2认同)