ubuntu系统配置vscode编译调试运行c++、cmake、ros程序

一、直接运行c++代码

通过使用 GCC C++ 编译器 (g++)GDB 调试器,在 VS Code 中编译和调试一个简单的C++程序。
其中,GCC 代表 GNU 编译器集合;GDB 是 GNU 调试器。

三个关键文件介绍

  • tasks.json :compiler build settings
  • launch.json :debugger settings
  • c_cpp_properties.json :compiler path and IntelliSense settings

1.配置 tasks.json

tasks.json(run helloworld.cpp)

  • 1.打开cpp文件,使其成为活动文件。

  • 2.按编辑器右上角的播放按钮。
    图1

  • 3.生成task文件
    从系统上检测到的编译器列表中选择 g++ 生成和调试活动文件(g++ build and debug active file)
    在这里插入图片描述

  • 4.此时在.vscode文件夹下面,会产生类似于下面的 JSON:tasks.json

    {
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ 生成活动文件",  //  在任务列表中看到的内容,可以任意命名
            
            "command": "/usr/bin/g++",  // 指定要运行的程序(命令),即 g++
            
            // 此任务告诉 g++ 获取活动文件
            // 对其进行编译,然后在当前目录中创建一个与活动文件同名
            // 但没有扩展名的可执行文件
            // 其实该部分参数就是g++编译器对应的参数设置
            "args": // g++ helloworld.cpp -o helloworld
            [ 
                "-fdiagnostics-color=always",
                "-g",
                "${file}",  //  要编译的cpp文件,可改为"${workspaceFolder}/*.cpp",则编译所有cpp文件
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}" // 输出名字
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "调试器生成的任务。"  // 在任务列表中对任务进行描述,建议重命名此值,以将其与类似任务区分开来。
        }
    ],
    "version": "2.0.0"
    }
    

2.配置 launch.json

launch.json(Debug helloworld.cpp)
该部分主要有两个:launch.json(Debug helloworld.cpp)

2.1 默认调试

  • 返回到helloworld.cpp程序中,以便它是活动文件。
  • 通过单击编辑器边距或在当前行上使用 F9 来设置断点。
  • 从播放按钮旁边的下拉列表中,选择“调试 C/C++文件”。播放按钮有两种模式:
    • 运行 C/C++ 文件:从开头运行到结尾
    • 调试 C/C++ 文件,可以一步一步调试
  • 从系统上检测到的编译器列表中选择 C/C++:g++ 生成和调试活动文件(只有在首次运行/调试时,系统才会要求您选择编译器,和1.3步骤一样)。
  • 调试的时候,可以在左侧变量窗口查看变量,也可以在watch窗口添加变量,观察某个变量。

2.2 配置launch自定义调试!很重要!

  • 生成launch文件方法:点击设置,再次选择 g++ 生成和调试活动文件即可产生该文件,或者按下图创建launch文件,然后点右下角添加配置,选第一个C/C++:(gdb)启动请添加图片描述

    请添加图片描述

  • 然后会创建一个文件,如下所示:launch.json

  • 一般需要配置:program、args和cwd

  • 常见变量:

    • ${workspaceFolder} :表示当前workspace文件夹路径,也即/home/Coding/Test
{
  "version": "0.2.0",
   "configurations": [
       {
           "name": "(gdb) 启动",
           "type": "cppdbg",
           "request": "launch",
           "program": "输入程序名称,例如 ${workspaceFolder}/a.out",  // 指定要调试的程序,很关键!
           "args": [], // 程序运行时,传递给程序的参数!比如:["./ubuntu.png"]
           "stopAtEntry": false, // 目标开头处是否停止,一般false
           "cwd": "${fileDirname}", // 目标的工作目录,相当于在终端里哪个路径位置,运行的程序
           "environment": [],
           "externalConsole": false,  // 是否在外部终端显示输出
           "MIMode": "gdb",
           "setupCommands": [
               {
                   "description": "为 gdb 启用整齐打印",
                   "text": "-enable-pretty-printing",
                   "ignoreFailures": true
               },
               {
                   "description":  "将反汇编风格设置为 Intel",
                   "text": "-gdb-set disassembly-flavor intel",
                   "ignoreFailures": true
               }
           ],
           "preLaunchTask": "C/C++: g++ build active file"
       }
   ]
}

3 C/C++ 配置

如果想要更好控制 C/C++ extension,可以创建c_cpp_properties.json文件,去更改编译路径、头文件路径、C++标准等设置。

打开方式:

按Ctrl+Shift+P,输入 C/C++: Edit Configurations,可以在json文件修改,也可使用ui界面编辑

{
  "configurations": [
    {
      "name": "Linux",
      "includePath": ["${workspaceFolder}/**"],   // 头文件路径
      "defines": [],
      "compilerPath": "/usr/bin/gcc",  // 编译器路径
      "cStandard": "c11",  // c 标准
      "cppStandard": "c++17",   // c++ 标准
      "intelliSenseMode": "clang-x64"
    }
  ],
  "version": 4
}

二、配置VS code运行cmake文件

整体流程

  • 建立CmakeLists.txt和cpp文件
  • 选择 kit(选择编译器,如gcc)
  • 选择variant(程序编译方式:debug、relase等)
  • 生成build文件,CMake: Configure
  • Build cpp代码
  • 运行或调试程序

1.建立CmakeLists.txt和cpp文件

2. 选择 kit

在使用CMake Tools 扩展插件之前,先通过对其进行配置,使其了解电脑上的编译器。首先需要查找kits,kit用于生成项目的编译器、链接器和其他工具。步骤:

  • 打开命令面板 (Ctrl+Shift+P) 并运行 CMake: Select a Kit。该扩展将自动扫描计算机上的工具包,并创建在系统上找到的编译器列表。
  • 选择要使用的编译器。例如,根据安装的编译器,可能会看到如下内容:
    请添加图片描述
    完成之后底部会显示:
    在这里插入图片描述
    如果要更改设置,可以点击绿框或者按照刚才的步骤重新设置一遍

3.选择variant(选择程序编译方式)

  • 共有四种方式:Debug, Release, MinRelSize, and RelWithDebInfo,一般常用前两个。

    • Debug: disables optimizations and includes debug info.
    • Release : Includes optimizations but no debug info.
  • 要选择variant,打开命令面板 (Ctrl+Shift+P) 运行 CMake:Select Variant 命令。
    在这里插入图片描述

  • 选择具体程序编译方式
    在这里插入图片描述

4. 生成build文件,CMake: Configure

打开(Ctrl+Shift+P)命令行,运行CMake: Configure,配置整个project,生成build文件。

5.Build cpp代码

  • 打开(Ctrl+Shift+P) 命令行
  • 运行CMake: Build command, 或者选择底部的Build按钮,快捷键(Ctrl+Shift+B)
    在这里插入图片描述
    注意:可以选择编译所有cpp文件,也可以编译单个文件(选择需要生成可执行文件的cpp文件)。

6.程序运行或调试

程序运行可以是运行模式,也可以是debug模式。

  • 如果是直接运行程序,可以直接点击底部状态里的播放按钮。播放按钮旁边可以选择具体运行的程序。
  • 如果是想调试程序,按照下面流程来。

6.1 选择运行程序

  • 关键需要的配置的文件就是launch.json,只需要在第一部分的配置中,把需要调试的文件可执行文件需要输入的参数imageBasics ubuntu.png,imageBasics是可执行文件、ubuntu.png为输入参数)进行修改即可。一般为:
    "program": "${workspaceFolder}/build/helloworld",  // 指定要调试的程序,很关键!
    "args": [], // 程序运行时,传递给程序的参数!比如:["./ubuntu.png"]
    "cwd": "${workspaceFolder}", // 目标的工作目录
     // 删除 "preLaunchTask": "C/C++: g++ build active file"
    
  • 删除task文件,这里关键部分是对g++ 编译参数确定(args[]),但该部分也可以通过cmake进行设置,因此也不需要了,删除之前,记得把launch文件里preLaunchTask删除。
  • c_cpp_properties文件,一般也可以删除,这里关键是添加头文件的路径,该路径也可以通过cmake进行添加,c++标准也可通过cmake设置,因此也就不需要了。

6.2 启动运行或者调试

调试方式可以直接按F5或者点运行-启动调试,或者打开命令面板 (Ctrl+Shift+P) 并运行 CMake:Debug

注意:不要直接点底部的蜘蛛和播放按钮进行调试和运行,从那里好像与launch文件就无关了

三、VScode运行和调试ros程序

方式一:vscode直接运行ros节点

启动roscore:通过按Ctrl + Shift + P,输入ros:start core启动roscore。
快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build,生成编译文件并编译所有代码
运行节点:通过按Ctrl + Shift + P,输入ros:run a rose executable,依次输入对应的package及节点、参数。或者直接在终端rosrun … …

方式二、调试ros节点debug

  1. 快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build,生成编译文件并编译所有代码
  2. 在未配置过调试前,没有launch.json文件。
    通过Ctrl + Shift + D,下拉添加配置,自动生成该文件。
    断点调试有如下几种方式,主要采用c/c++ gdb启动,使用调试方法,不需要先运行节点。该方式会生成launch.json:
  3. 需要修改其中program为需要调试的可执行程序。更改为编译后的可执行文件的路径下的文件(需要二进制文件),对应ROS通过catkin_make生产可执行文件的路径通常在 /devel/lib/ 下,后面跟上你设置好的package名和可执行文件名
  4. 然后正式调试:
    • 启动roscore:通过按Ctrl + Shift + P,输入ros:start core启动roscore。
    • 设置断点,运行调试(F5)
    • 如果系统像没有断点一样运行,需要配置一下。在CMakeLists.txt中,project后添加参数SET(CMAKE_BUILD_TYPE Debug)
    • 然后重新catkin_make:

方式三、调试 用launch启动节点

在launch.json文件中,在右下角选择添加配置,然后选择ROS:Launch
然后在target中,输入要运行的launch节点。
按F5进入调试
注意需要在cmakelist中设置为debug模式,不然代码进行了不同等级的优化后,不利于观察每一步的输出。set(CMAKE_BUILD_TYPE "Debug")
在这里插入图片描述

{
    "configurations": [
    {
        "name": "ROS: Launch",
        "type": "ros",
        "request": "launch",
        "target": "/home/th/ws/src/fusion/launch/fusion.launch"
    }
    ]
}

参考博客

四、配置VS code编译运行多个执行文件

该部分的步骤和单个文件一样(kit-variant-Configure-build-F5调试),最后调试的时候,需要在launch文件选择好需要执行的文件。
《slam14讲》ch5中,有三个子cmake工程,一个主工程,

请添加图片描述
对其进行编译之后,会在build文件夹下,每个不同分类文件夹下生成可执行文件。
请添加图片描述
当我们需要对其中某个进行调试的时候,只需要修改launch文件中以下项目即可:

  • imageBasics文件夹下undistortImage可执行文件为例:
    // ${workspaceFolder} --- the path of the folder opened in VS Code
     "program": "${workspaceFolder}/build/imageBasics/undistortImage", // 可执行文件位置以及名字
    "args": [], // 传入参数
    "cwd": "${workspaceFolder}/imageBasics", // 目标的工作目录
    
  • imageBasics文件夹下imageBasics可执行文件为例:
     "program": "${workspaceFolder}/build/imageBasics/imageBasics", // 可执行文件位置以及名字
    "args":["${workspaceFolder}/imageBasics/ubuntu.png"], // 传入参数
    "cwd": "${workspaceFolder}/imageBasics", // 目标的工作目录
    

参考教程:

最好的教程还是在官网,上述仅是我个人了理解。

VS code官网:

  1. https://code.visualstudio.com/docs/cpp/config-linux
  2. https://code.visualstudio.com/docs/cpp/cmake-linux
  3. https://github.com/microsoft/vscode-cmake-tools/blob/main/docs/README.md(我觉得这个也有用,但目前没看)
  4. https://code.visualstudio.com/docs/editor/variables-reference(json文件配置,所有路径介绍)
    请添加图片描述

博客

  1. https://blog.csdn.net/weixin_41877339/article/details/115006881
  2. https://blog.csdn.net/qq_37264323/article/details/109898929
  3. https://blog.csdn.net/qq_28598203/article/details/52911007
### 安装 Visual Studio Code 在 Ubuntu 上安装 Visual Studio Code 可以通过多种方法实现。以下是两种常见的安装方式: #### 方法一:使用 `umake` 工具安装 可以通过 `ubuntu-make` (umake) 来安装 VSCode,这是一种简单快捷的方式。 1. 添加 `ubuntu-make` 的 PPA 源: ```bash sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make ``` 2. 更新本地包索引并安装 `ubuntu-make`: ```bash sudo apt-get update && sudo apt-get install ubuntu-make ``` 3. 使用 `umake` 安装 VSCode: ```bash umake ide visual-studio-code ``` 在此过程中会提示选择安装路径,按照提示输入即可完成安装[^2]。 --- #### 方法二:通过官方 `.deb` 包安装 另一种更直接的方法是从 Microsoft 官方网站下载 `.deb` 包进行安装。 1. 下载最新版的 VSCode `.deb` 包: 打开浏览器访问 [Visual Studio Code 官网](https://code.visualstudio.com/) 或者直接运行以下命令来下载: ```bash wget https://go.microsoft.com/fwlink/?LinkID=760868 -O vscode.deb ``` 2. 安装 `.deb` 包: ```bash sudo dpkg -i vscode.deb ``` 3. 如果遇到依赖问题,可以修复它们: ```bash sudo apt --fix-broken install ``` 4. 启动 VSCode: 输入以下命令或者从应用程序列表中找到它: ```bash code ``` --- ### 配置 ROS 开发环境 为了使 VSCode 能够支持 ROS 开发,需要执行以下几个关键步骤: #### 1. 安装必要的扩展 VSCode 提供了许多针对 C++ 和 Python 编程的支持插件,这些对于 ROS 开发非常重要。推荐安装以下扩展: - **C/C++**: 支持语法高亮、代码补全等功能。 - **Python**: 对于编写 Python 类型的 Node 很重要。 - **ROS**: 这是一个专门为 ROS 设计的扩展,提供了诸如自动补全、调试支持等特性。 可以在 VSCode 中按下 `Ctrl+Shift+X` 打开扩展市场,搜索上述名称逐一安装。 #### 2. 创建工作区 创建一个新的文件夹作为您的 ROS 工作空间,并将其添加到 VSCode 中的工作区内。 ```bash mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make ``` 接着,在 VSCode 中打开这个工作区: ```bash code . ``` #### 3. 配置编译任务 (`tasks.json`) 为了让 VSCode 自动化构建过程,需定义一个 `tasks.json` 文件用于描述如何调用 `cmake` 和 `make` 构建项目。 进入项目的根目录下(即包含 `src/` 子目录的位置),然后按如下操作生成配置文件: 1. 按下 `Ctrl+Shift+P`,输入 `Tasks: Configure Task` 并回车; 2. 选择 `Create tasks.json file from template -> Others`; 3. 替换默认内容为以下 JSON 数据结构[^4]: ```json { "version": "2.0.0", "options": { "cwd": "${workspaceFolder}/build" }, "tasks": [ { "type": "shell", "label": "cmake", "command": "cmake", "args": [".."] }, { "label": "make", "group": { "kind": "build", "isDefault": true }, "command": "make", "args": [] }, { "label": "Build", "dependsOrder": "sequence", "dependsOn": ["cmake", "make"] } ] } ``` 保存后可通过 `Ctrl+Shift+B` 快捷键触发构建流程。 #### 4. 设置调试器 (`launch.json`) 如果希望能够在 IDE 内部直接调试程序,则还需要额外配置 `launch.json` 文件。同样地,您也可以借助内置向导快速生成模板,之后手动调整字段使其适配实际需求。 例如,下面展示了一个简单的例子用来启动某个特定节点: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "/path/to/executable_node", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [{"name":"ROS_MASTER_URI","value":"http://localhost:11311"}], "externalConsole": true, "MIMode": "gdb" } ] } ``` 注意替换其中 `/path/to/executable_node` 成为目标可执行文件的真实路径。 --- ### 总结 以上就是在 Ubuntu 系统上成功部署 Visual Studio Code 并为其配备适合 ROS 开发所需全部组件的过程概述。遵循上述指南应该能够顺利达成目标。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值