Ubuntu升级cmake,可任意切换版本

本文详细描述了如何升级CMake到特定版本(如3.22.0),包括下载、解压、移动文件至系统目录并创建软链接的过程,以及如何切换不同版本以满足需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天需要使用cmake编译一个工程,但是提示cmake版本不对,记录一下如何升级cmake,并实现自由切换版本。

升级步骤

  1. 下载cmake安装包
    点击此链接下载对应版本的cmake
  2. 使用tar解压
tar -zxvf cmake-3.22.0-linux-x86_64.tar.gz

在这里插入图片描述
3. 查看解压内容,此步骤不必要(我安装时解压方式不对,所以造成文件缺失,导致安装失败,执行本步骤查看解压结果)

tree -L 3
# 如果执行上述命令提示没有安装tree,不要慌张,不要着急,执行下述命令即可
sudo apt install tree

在这里插入图片描述
4. 将解压后的文件移动至系统目录,并创建软链接文件即可。

sudo mv cmake-3.22.0-linux-x86_64 /opt/cmake-3.22.0/
sudo ln -sf /opt/cmake-3.22.0/bin/* /usr/bin/
# 查看cmake版本
cmake --version

在这里插入图片描述
5. 切换其他版本
重复1~4步骤,在第4步骤重新创建相应版本的软链接即可。

### 如何在 Ubuntu 上通过 CMake 指定特定 Boost 版本 为了在 Ubuntu 系统中使用 CMake 构建项目并指定特定版本的 Boost 库,可以利用 `find_package` 和环境变量的方式实现。以下是具体方法: #### 设置 Boost 路径 如果多个版本的 Boost 安装在同一台机器上,则需要明确告知 CMake 去查找哪个路径下的 Boost 版本。这通常可以通过设置 `BOOST_ROOT` 或者 `Boost_ROOT` 环境变量完成。 ```bash export BOOST_ROOT=/path/to/boost/version export Boost_ROOT=/path/to/boost/version ``` 上述命令会告诉 CMake 到指定目录下寻找所需的 Boost 版本[^1]。 #### 修改 CMakeLists.txt 文件 在项目的 `CMakeLists.txt` 文件中加入如下内容以确保正确找到目标 Boost 版本: ```cmake set(Boost_USE_STATIC_LIBS ON) # 如果希望使用静态库而非共享库 set(Boost_USE_MULTITHREADED ON) set(Boost_USE_STATIC_RUNTIME OFF) # 查找 Boost 并验证其存在性和版本号 find_package(Boost REQUIRED COMPONENTS system filesystem thread) if(Boost_FOUND) message(STATUS "Found Boost version: ${Boost_VERSION}") else() message(FATAL_ERROR "Could not find required Boost libraries.") endif() include_directories(${Boost_INCLUDE_DIRS}) target_link_libraries(your_target_name PRIVATE ${Boost_LIBRARIES}) ``` 此脚本片段设置了几个重要的标志位用于控制如何链接 Boost 库,并调用了 `find_package()` 函数来定位所需组件及其最低兼容版本[^4]。 #### 工具链文件的应用(可选) 对于某些复杂的场景比如交叉编译,可能还需要创建自定义工具链文件以便更好地管理外部依赖项。例如,在该文件里设定好交叉编译器以及对应的 sysroot 参数之后再传递给 cmake 进程即可[^3]: ```cmake # Toolchain file example (cross_toolchain.cmake) set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR armhf) set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabihf-gcc) set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabihf-g++) set(BOOST_ROOT "/opt/boost_for_arm") set(ENV{BOOST_ROOT} "${BOOST_ROOT}") set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) ``` 随后运行 cmake 配置时加上 `-DCMAKE_TOOLCHAIN_FILE=cross_toolchain.cmake` 即可加载这个预设好的配置。 --- #### 注意事项 当遇到多版本共存的情况时,请务必确认所使用的包管理器不会覆盖掉手动安装的部分;另外也要注意不同发行版之间默认提供的 boost 开发头文件位置差异较大,因此建议始终采用绝对路径指向确切的目标软件集合。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DA0221

各位看官您往里面瞧一瞧看一看

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值