CMake 自定义工具链在rh7.9上使用高版本gcc体验c++17特性

本文介绍了如何在RHEL7.9系统(默认GCC4.8.5)上通过CMake配置文件指定自定义工具链(GCC11.2),使能在低版本GCC环境下使用高版本GCC进行编译。同时,讲解了如何修改VSCode的CMakeTools插件配置,以便支持自定义工具链,包括设置CMake工具链文件和调整IntelliSense配置,实现代码编辑和开发的无缝支持。
摘要由CSDN通过智能技术生成

本文建立在在上一篇文章的基础上 《编译安装GCC11.2 包教包会》,展示了如何让CMake使用自定义工具链,在低版本gcc机器上使用高版本gcc,例如在RHEL 7.9系统(默认gcc 4.8.5)上使用gcc 11.2的方法。

请注意,以下内容能够工作的前提是:高版本的gcc已经正确安装在/opt/toolchains目录下。

编写CMake工具链定义文件

具体内容很简单,如下:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER /opt/toolchains/bin/gcc)
set(CMAKE_CXX_COMPILER /opt/toolchains/bin/g++)
set(CMAKE_FIND_ROOT_PATH /opt/toolchains)
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_INSTALL_RPATH "/opt/toolchains/lib64")
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/opt/toolchains/lib64 -lc -lstdc++")
  1. 因为我们的目标平台就是Linux,所以CMAKE_SYSTEM_NAME设置为Linux;
  2. CMAKE_C_COMPILERCMAKE_CXX_COMPILER这两个变量定义了工具链的C/C++编译器可执行文件的位置;
  3. CMAKE_FIND_ROOT_PATH定义了工具链的根目录位置,本例中是/opt/toolchains(如果不明白建议看上一篇文章);
  4. 其他的都是根据工具链编译需要的参数;需要注意的是,CMAKE_INSTALL_RPATH设置为libstdc++.so的位置,并且将CMAKE_BUIL_WITH_INSTALL_RPATH设置为TRUE,这样就可以在CMake编译后,将可执行文件的rpath设置为INSTALL_RPATH,无需修改环境变量即可直接运行编译后的程序;

修改VSCode中CMakeTools插件的配置

vscode作为宇宙最强编辑器,在使用自定义工具链的时候也能提供强大的支持。默认情况下,自定义工具链不会被CMakeTools插件找到,需要修改插件的配置,具体方式如下:

  1. Ctrl + Shift + P 打开命令面板
  2. 输入CMake,在下方的列表中,找到
    CMake: Edit User-Local CMake Kits 这一行
  3. 在弹出的cmake-tools-kits.json配置文件中,追加一个配置项:
      {
         "name": "gcc 12.1.0",
         "toolchainFile": "/usr/include/gcc12.cmake"
      },
    
    注意,此处我将自定义工具链定义文件gcc12.cmake放置在了/usr/include目录下,便于查找。
  4. 最后,重新打开命令面板,找到CMake: Configure按钮,即可弹出所有可用的工具链,其中就有刚才添加的自定义工具链,并且在CMake配置阶段就能发现,默认的C/C++编译器已经切换到自定义工具链路径下的编译器了。
  5. 注意,如果在CMake: Configure后,vscode提示找不到<optional>或者<variant>之类的C++17才有的头文件,需要手动切换一下intellisense的方式。同样打开命令面板,输入intellisense,在下方提示中找到C/C++: Select IntelliSense Configuration命令,点击,选择Use CMake Tools,让插件帮我们确定intellisense的头文件目录。
    至此,vscode也可以完美支持自定义工具链下的代码编辑和开发了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值