VSCode的C/C++扩展功能

VSCode的C/C++扩展功能


Reference:

  1. Visual Studio Code的C/C++扩展功能
  2. Using C++ on Linux in VS Code

VSCode的C/C++扩展功能

1. 在 Linux 上 使用 C++

1.1 创建 Hello World

从 terminal 窗口,创建一个叫做 projects 的空文件夹来存储 VS Code 项目。然后创建一个叫做 helloworld 的子文件夹,导航到里面后,输入最下面的命令打开 VS Code:

mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .

code . 命令打开当前文件夹下的 VS Code,也就是 ”workspace“。在该 workspace 内的 .vscode 文件夹下会创建三个文件:

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

创建文件 helloworld.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;
}

1.2 探索 IntelliSense

helloworld.cpp 文件中,将鼠标悬停在 vectorstring 上查看类型信息。在申明 msg 变量后面,开始输入 msg.。这时看到一个显示所有成员函数的补全列表,以及一个显示 msg 对象类型信息的窗口:
VSCode的C/C++扩展功能Tab 键插入选中的成员。然后,当添加开括号时,会看到关于函数所需参数的信息。

1.3 构造 helloworld.cpp

这时需要创建一个 tasks.json 文件来告诉 VS Code 如何构造(搭建)该程序。这个文件会唤醒 g++ 编译器,并从源代码创建一个可执行文件

在编辑器中打开 helloworld.cpp 非常重要,因为下一步将使用上下文编辑器中的活跃文件来创建下一步的构建任务:
在主菜单中,选择 Terminal > Configure Default Build Task。下拉菜单显示了C++编译器的各种预定义构建任务,这里选择 C/C++: g++ build active file
VSCode的C/C++扩展功能这里会在 .vscode 文件夹内创建一个 tasks.json 文件并在编译器内打开它。这时的 tasks.json 文件看起来应该跟下面的 JSON 相似:

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "shell",
      "label": "g++ build active file",
      "command": "/usr/bin/g++",
      "args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
      "options": {
        "cwd": "/usr/bin"
      },
      "problemMatcher": ["$gcc"],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

可以在variables reference了解更多关于 task.json 变量。

command 设置指定要运行的程序;在本例中,使用的是 g++。args 数组指定将传递给 g++ 的命令行参数。这些参数必须按照编译器期望的顺序指定。

这个文件告诉 g++ 获取 active file(${file}),编译它,并在当前目录(${fileDirname})中创建一个与 active file 同名但没有扩展名(${fileBasenameNoExtension})(比如.exe等)的可执行文件,从而得到示例中的 helloworld

label 的值是会在 tasks list 中看到的,可以给它随便命名。

group 对象中的 "isDefault": true 值指定该任务将在按下 Ctrl+Shift+B 时运行。这个属性只是为了方便;如果你设置为 false,仍然可以从终端菜单的 Tasks: Run Build Task 运行它。

1.3.1 运行 build

  1. 回到 helloworld.cpp。现在的任务是搭建 active file,这时想要搭建 helloworld.cpp
  2. 为了运行定义在 tasks.json 内的 build task,按下 Ctrl+Shift+B 或者从主菜单 Terminal 选择 Run Build Task
  3. 当任务开始时,会看到集成终端面板出现在源代码编辑器下面。任务完成后,终端显示编译器的输出,指示构建是成功还是失败。对于一个成功的 g++ 构建,输出如下所示:
    VSCode的C/C++扩展功能
  4. 使用 + 按钮创建一个新的终端,将会拥有一个运行默认 shell 的终端,并将 helloworld 文件夹作为工作目录。运行 ls,应该看到可执行文件 helloworld(没有文件扩展名)。
  5. 可以通过输入 ./helloworld 在终端运行 helloworld

1.3.2 修改 tasks.json

也可以修改 tasks.json 文件,用 "${workspaceFolder}/*.cpp" 替代 ${file} 来构建多个 C++ 文件。也可以通过用硬编码的文件名(例如helloworld.out)替换 "${fileDirname}/${fileBasenameNoExtension}" 来修改输出文件名。

二级目录

三级目录

上一篇:day21网络编程(下)


下一篇:【Python】多终端发送、订阅mqtt消息