共计 6195 个字符,预计需要花费 16 分钟才能阅读完成。
—— 基于 Visual Studio Code 官网文档的全面的、具体的入门级教程
作者:Xi Xu
浏览原文
举荐应用 OpenAI API 来进步编程效率《OpenAI 账户注册 —— 中国大陆的最优解决方案》。
倡议在学习本教程的同时观看本教程配套视频。
在本教程中,您将为应用 UCRT64 中的 GCC C++ 编译器(g++)和 GDB 调试器配置 Visual Studio Code 来创立在 Windows 上运行的程序。
配置 VS Code 后,您将在 VS Code 中编译和调试一个简略的 Hello World 程序。本教程不会教您无关 GCC,GDB,UCRT64 或 C++ 语言的常识。对于这些主题,网络上有许多很好的资源。
本教程内容较多,但若严格依照本教程操作,就能轻松实现 Visual Studio Code – C++ 入门,所以请急躁残缺地学习本教程。 如果遇到任何问题,在查问网络后有效的状况下能够退出 QQ 频道 VS Code。
先决条件
若要胜利实现本教程,必须执行以下步骤:
- 装置 Visual Studio Code(运行刚下载的安装程序,抉择 我批准此协定 后始终抉择 下一步 ,在 抉择附加工作 页面抉择所有选项,最初抉择 装置)。
提醒:安装程序会将 Visual Studio Code 增加到您的 _PATH_,因而您能够从终端键入 code . 以在该文件夹上关上 VS Code。装置后,您须要重新启动终端能力使对环境变量的更改失效。
- 装置扩大:Chinese (Simplified) Language Pack for Visual Studio Code 和 C/C++。
- 通过 MSYS2 获取最新版本的 UCRT64,它提供了 GCC,UCRT64 和其余有用的 C++ 工具和库的最新本地版本。依照 MSYS2 官网中的 Installation 阐明装置 MSYS2(如果 installer 下载速度较慢或无奈下载,能够通过百度网盘、阿里云盘、腾讯微云或蓝奏云(明码:i5ec)下载;因为更新数据库,装置 MSYS2 工夫会较长)。
- 装置 UCRT64 工具链。当 MSYS2 曾经准备就绪,UCRT64 环境的终端将启动,顺次键入,承受默认值以装置工具链组中的所有成员:
$ pacman -S tar make
$ pacman -S mingw-w64-ucrt-x86_64-toolchain
$ pacman -Syu
- 应用以下步骤将 UCRT64 文件夹的门路增加到 Windows 环境变量:
- 在 Windows 搜寻栏中,键入 设置 以关上 Windows 设置。
- 搜寻 编辑帐户的环境变量。
- 在用户变量中抉择变量 Path,而后抉择 编辑。
- 抉择 新建 并将 UCRT64 指标文件夹门路增加到零碎门路。确切的门路取决于您装置的 UCRT64 装置地位。如果您应用默认门路装置 UCRT64,请将其增加到门路:C:\msys64\ucrt64\bin。抉择 确定 以保留更新的门路。
- 若要查看 UCRT64 工具是否已正确装置且可用,请关上新的终端并顺次键入:
gcc --version
g++ --version
gdb --version
创立 Hello World
在磁盘(能够是任意地位)中创立一个名为 code(能够是其余命名)的空文件夹,您能够在其中搁置所有 VS Code 代码。在 VS Code 中关上该文件夹(能够右键单击该文件夹,抉择 通过 Code 关上 ),该文件夹将成为您的工作区。通过抉择 是,我信赖此作者信赖文件夹并启用所有性能 承受工作区信赖对话框,因为这是您创立的文件夹。
在学习本教程时,你将看到在工作区中的被 VS Code 创立的文件夹 .vscode 和其中的两个文件:
tasks.json(编译配置)
launch.json(调试器配置)
增加源代码文件
在 资源管理器 标题栏中,抉择 新建文件 按钮并将文件命名为 helloworld.cpp。
增加 helloworld 源代码
当初复制此源代码粘贴到该文件:
#include <bits/stdc++.h>
using namespace std;
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
当初保留文件。
您还能够启用主动保留以主动保留文件更改,办法能够参考后文 更多 中的 3。
应用最左侧的流动栏能够关上不同的视图,例如 搜寻 、 运行和调试 和 扩大 。本教程稍后将查看 运行和调试 视图。能够在 VS Code 用户界面文档中找到无关其余视图的详细信息。
留神:保留或关上 C++ 文件时,你可能会看到来自 C/C++ 扩大的无关预览体验成员版本可用性的告诉,该告诉可用于测试新性能和修补程序。您能够通过抉择 革除所有告诉 来疏忽此告诉。
运行 helloworld.cpp
请记住,C++ 扩大应用计算机上安装的 C++ 编译器来生成程序。在尝试在 VS Code 中运行和调试 helloworld.cpp 之前,请确保已装置 C++ 编译器(实现前文 先决条件 中的 3 ~ 5)。
关上 helloworld.cpp,抉择编辑器右上角的 开始 按钮。
抉择 C/C++: g++.exe 生成和调试流动文件。
只有在第一次运行 helloworld.cpp 时才会要求您抉择编译器。此编译器将在文件 tasks.json 中设置为默认编译器。
编译胜利后,程序的输入将显示在集成终端中。
首次运行程序时 tasks.json 会创立,您能够在工作区中的文件夹 .vscode 中找到它。tasks.json 存储编译配置。
将您的新文件 tasks.json 中的全部内容替换为以下内容(留神第 10、11 行代码,能够依据需要其中一行被正文,另一行未被正文,否则无奈编译):
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++:g++.exe 生成流动文件",
"command": "C:\\msys64\\ucrt64\\bin\\g++.exe", // 编译器门路,如果您应用默认门路装置 UCRT64 则无需批改
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}", // 仅编译以后关上的源文件
//"${fileDirname}\\*.cpp", // 编译以后文件夹下的所有源文件
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {"cwd": "${fileDirname}"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的工作。"
}
],
"version": "2.0.0"
}
调试 helloworld.cpp
返回到 helloworld.cpp。通过单击编辑器左侧边缘来设置断点。
从 开始 按钮旁边的下拉列表中,抉择 调试 C/C++ 文件。
从零碎上检测到的编译器列表中抉择 C/C++:g++.exe 生成和调试流动文件(仅在首次运行 / 调试 helloworld.cpp 时要求您抉择编译器,所以个别状况下能够省略该步骤)。
开始 按钮有两种模式: 运行 C/C++ 文件 和 调试 C/C++ 文件 。它将默认为上次应用的模式。如果在 开始 按钮中看到调试图标,只需抉择 开始 按钮即可进行调试,而无需应用下拉列表。
摸索调试器
在开始单步执行代码之前,让咱们花点工夫留神用户界面中的几个更改:
集成 终端 显示在源代码编辑器的底部。
编辑器会突出显示在启动调试器之前设置断点的行。
左侧的 运行和调试 视图显示调试信息。
在代码编辑器的顶部,将显示调试控制面板。您能够通过托住左侧的点在屏幕上挪动它。
单步执行代码
当初,你已筹备好开始单步执行代码。
具体操作步骤省略,相干快捷键能够参考 附。
最初您能够在集成 终端 中看到输入,以及 GDB 输入的一些其余诊断信息。
设置监督
有时,您可能心愿在程序执行时跟踪变量的值。您能够通过在变量上设置监督来执行此操作。
在 监督 窗口中,抉择加号,而后在文本框中键入变量。
若要在断点处暂停执行时疾速查看任何变量的值,能够应用鼠标指针将鼠标悬停在该变量上。
应用 launch.json 自定义调试
应用 开始 按钮进行调试时,C++ 扩大会动态创建动静调试配置。
在某些状况下,您须要自定义调试配置,例如指定要在运行时传递给程序的参数。您能够在文件 launch.json 中定义自定义调试配置。
抉择 设置 按钮来创立 launch.json:您将看到各种预约义调试配置的下拉列表,抉择 C/C++: g++.exe 生成和调试流动文件,VS Code 会创立一个文件 launch.json。将其中的全部内容替换为以下内容:
{
"configurations": [
{
"name": "C/C++:g++.exe 生成和调试流动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"internalConsoleOptions": "neverOpen",
"MIMode": "gdb",
"miDebuggerPath": "C:\\msys64\\ucrt64\\bin\\gdb.exe", // 调试器门路,如果您应用默认门路装置 UCRT64 则无需批改
"setupCommands": [
{
"description": "为 gdb 启用参差打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编格调设置为 Intel",
"text": "-gdb-set disassembly-flavorintel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++:g++.exe 生成流动文件"
}
],
"version": "2.0.0"
}
从当初开始,开始 按钮将在启动程序进行调试时从您的文件 launch.json 中读取。
更多
- 前文中 tasks.json 和 launch.json 的内容为作者将默认内容稍作批改后的版本,使 VS Code 更易于应用,具体如下:
- 在 tasks.json 中,增加:
// "${fileDirname}\\*.cpp",
- 在 launch.json 中,增加,管制在开始调试后不关上外部 调试控制台 ,而是停留在集成 终端,便于输出和查看输入:
"internalConsoleOptions": "neverOpen",
- 举荐装置的拓展:Code Runner,Tabnine AI Autocomplete(十分举荐),vscode-icons。其性能能够参考各自网页中的 Overview,还有其余优良的拓展能够自行摸索。
- 为了使 VS Code 更易于应用,能够进行 VS Code 用户设置。在 %AppData%\Code\User 中创立 JSON 文件 settings.json(能够先新建文本文档,而后重命名为 settings.json,而后通过 VS Code 关上,下 4 同),内容如下(其中蕴含前文的主动保留的设置,您还能够自行摸索还有其余设置):
{
"editor.formatOnPaste": true, // 管制编辑器是否主动格式化粘贴的内容。格式化程序必须可用,并且能针对文档中的某一范畴进行格式化。"editor.formatOnSave": true, // 在保留时格式化文件。格式化程序必须可用,提早后文件不能保留,并且编辑器不能敞开。"editor.formatOnType": true, // 管制编辑器在键入一行后是否主动格式化该行。"editor.minimap.enabled": false, // 管制是否显示缩略图。"editor.wordWrap": "on", // 管制折行的形式。"terminal.integrated.allowChords": false, // 是否容许终端中的组合键绑定。"terminal.integrated.enableMultiLinePasteWarning": false, // 将多行粘贴到终端时显示正告对话框。"explorer.confirmDelete": false, // 管制资源管理器是否应在通过回收站删除文件时要求确认。"explorer.confirmDragAndDrop": false, // 管制资源管理器是否应在通过拖放挪动文件或文件夹时要求确认。"window.autoDetectColorScheme": true, // 如果已设置,则依据 OS 外观主动切换到首选色彩主题。"debug.onTaskErrors": "showErrors", // 管制在运行预启动工作后遇到谬误时应该怎么做。"files.autoSave": "afterDelay", // 管制具备未保留更改的编辑器的 主动保留。"workbench.iconTheme": "vscode-icons", // 指定工作台中应用的文件图标主题。"tabnine.experimentalAutoImports": true, // 利用 Tabnine 倡议后启用模块主动导入。"tabnine.receiveBetaChannelUpdates": true, // 接管 Tabnine VS Code 扩大测试版更新。"code-runner.clearPreviousOutput": false, // 是否在每次运行前革除以前的输入。"code-runner.preserveFocus": true, // 是否在触发代码运行后保留对代码编辑器的焦点。"code-runner.runInTerminal": true, // 是否在集成终端中运行代码。"code-runner.saveFileBeforeRun": true // 是否在运行前保留以后文件。}
- 为了将每次编译后产生的 EXE 等类型的文件删除,在工作区中创立 BAT 文件 .del.bat,内容如下,而后在资源管理器中右键抉择 .del.bat,抉择 Run Code(前提是已装置拓展 Code Runner):
del *.exe /q /s
del a.out /q /s
del *.o /q /s
del *.log /q /s
del tempCodeRunnerFile.c /q /s
- 为了在运行 VS Code 的同时关上作为工作区的文件夹,能够右键抉择其快捷方式,抉择 属性 ,在 指标 后增加工作区的门路,如:“C:\Program Files\Microsoft VS Code\Code.exe” “C:\code”,抉择 确定。
- 作为在寰球范畴内最受程序员欢送的代码编辑器,VS Code 具备许多优良的特点,能够帮忙您轻松编写代码,您能够自行摸索。
- VS Code 还提供外部版本 Visual Studio Code Insiders(作者应用的版本),能够装置其来获取每天的最新版本。
- 本教程中波及到的文件能够在此链接下载。
- 其余的相干内容(蕴含更深刻的非入门级教程)能够参考 Visual Studio Code 官网文档。
- 因为作者程度无限,本教程可能存在一些有余,欢送读者将发现的谬误或提出的意见与倡议告知作者(在手机上点击 QQ)。
附