cmake的版本会不会影响编译结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake的版本会不会影响编译结果相关的知识,希望对你有一定的参考价值。

参考技术A 会。根据查询相关资料显示,cmake的版本包括(cuda、gcc、tensorflow的版本),这几个版本稍有偏差,就会造成编译运行失败影响结果。CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。

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

以上是关于cmake的版本会不会影响编译结果的主要内容,如果未能解决你的问题,请参考以下文章

使用特定链接器进行CMake交叉编译不会将参数传递给armlink

初步编译QT5.15.2+VS2019+VTK8.2.0

初步编译QT5.15.2+VS2019+VTK8.1.0

Windows opencv cmake编译报错

巨坑,cmake make相同的代码居然产生不同的编译结果!见鬼了,ngrest

巨坑,cmake make相同的代码居然产生不同的编译结果!见鬼了,ngrest