Ubuntu 系统使用 Visual Studio Code(vs code) 跑 C++项目

1、前景知识介绍

本篇博客介绍如何在 Ubuntu 20.04 环境下,配置 Visual Studio Code,从而使用 GCC (C++ compiler (g++)) 和 GDB (debugger)。

这里介绍一下,GCC 表示 GNU Compiler Collection 编译器集合; GDB 是 GNU debugger。

GCC,它可以编译C、C++、JAV、Fortran、Pascal、Object-C等语言。gcc 是 GCC 中的 GNU C Compiler(C 编译器),g++ 是GCC中的GNU C++ Compiler(C++编译器)。
gcc 和 g++ 存在些许的区别,想要了解可以查看博客

2、预先准备条件

在创建项目之前,我们需要准备 3 个工作。

  1. 安装 VS Code
  2. 在 VS Code 中安装 C++ extension
  3. 确保 Ubuntu 中安装了 GCC(GNC Compiler Collection)

安装 VS Code 去官网 下载 .deb,将下载完成的 .deb 文件使用 dpkg -i 文件名.deb 安装即可。

安装 VS Code 完成后,进入软件,安装 C++ extension 过程如下图所示:

确保 GCC 在 Ubuntu 系统已经安装。 VS Code 编译、运行、调试 C++ 项目,需要确保 Ubuntu 系统中已经存在 GCC 和 GDB,倘若不存在可以使用 apt-get 命令安装。
首先,使用命令 gcc -v 查看系统中是否存在 GCC,倘若存在的话,那么 GCC 版本将会在命令行中给出。
如果,GCC不存在,我们考虑安装

sudo apt-get update  # 更新 apt-get 工具,如果不更新可能会影响某些 package
sudo apt-get install build-essential gdb  # 安装 GNU Compiler 工具和 GDB调试

3、创建 Hello World 项目

创建打开项目

首先,打开 Terminal 创建项目文件夹。而后,使用 VS Code 将项目文件夹打开

mkdir projects  # 总的 VS Code 项目文件夹,可以不创建,但是一个总的文件夹,可以方便以后你查找项目
cd projects
mkdir helloworld  # 用于这次项目的文件夹 Hello World
cd helloworld  # 进入到该文件夹
code .        # 在该文件夹内打开 VS Code,该文件夹就相当于 Workspace

如果你按照本篇博客的思路走,你将会在 Workspace.vscode 目录下创建 3 个文件

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

创建 C++ 文件

在项目中 New File,并将其命名为 helloworld.cpp

可以将以下代码复制到 cpp 文件中,进行测试

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};

    for (const string& word : msg)
    {
        cout << word << " ";
    }
    cout << endl;
}

每次修改完文件,记得使用 ctrl + s 保存文件。

4、运行 Hello World 项目

在运行 Hello World 项目前,需要确保 Ubuntu 系统中已经有了 C++ compiler,虽然 VS Code 中已经下载了 C++ extension,但是他调用的仍然是系统的 C++ compiler 和 C++ Debuger。

运行 Hello World

首先,我们选中 cpp 文件,将其打开,并点击 play 按钮

然后,从 VSCode 所检测的 Compiler 中选择 g++ build and debug active file。并且只有当你第一次运行项目是需要选择 compiler。此后 compiler 信息会被存储在 task.json 文件中作为 default

终端 teriminal 会输出结果信息。

第一次运行时,之前在 VS Code 中下载的 C++ extension 会自动在 .vscode 文件夹中生成 task.json 文件,该文件存储了项目的 build 配置信息。

你的 task.json 文件应当和下方给出的形式类似。

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ 生成活动文件",
            "command": "/usr/bin/g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

json 文件参数介绍

前文给出了 json 中,详细的介绍以下他的参数。
command 指定了项目运行的程序,在这个例子中是 g++,并给出了绝对路径
args 指定了 传递给 command 指定程序 (本次是g++) 的参数,并且这些参数需要按照顺序给出。
如本项目执行时候应该是 /usr/bin/g++ -g ${file} -o ${fileDirname}/${fileBasenameNoExtension}。 其中-g 选项告诉GCC产生能被GNU调试器使用的调试信息,以调试程序。结合 -o 产生带调试信息的可执行文件test(o小写)。

task.json 文件是告诉 g++ 对 ${file} 文件处理,编译,并在 ${fileDirname} 文件夹内产生一个和${file}同名,但是没有扩展名称的可执行文件${fileBasenameNoExtension},对于本次就是 helloworld

label 是在 tasks list 显示的文字,你可以给他任意命名。

detail 是在 tasks list 中该 task 的描述信息,强烈推荐在相同的 tasks 任务中,使用 details 将他们区分。

你可以修改 tasks.json 来 build 多个 C++ 文件,通过使用 参数像是 ${workspaceFolder}/*cpp而不是${file}。这将会build所有的 cpp 文件在当前的 文件夹下。
同时,你也可以将输出文件名称${fileDirname}/${fileBasenameNoExtension}修改为helloworld.out

参考链接

参考于 VS Code 官网

posted @ 2022-07-04 15:15  lucky_light  阅读(3493)  评论(0编辑  收藏  举报