VS Code配置C++开发环境
背景:我在 window10 系统上按照 VS Code 官网配置 C++ 开发环境时,在命令面板中搜索不到 C++ 的 UI 配置选项,只得在 .vscode
目录下手动创建了 tasks.json
、launch.json
和 c_cpp_properties.json
文件。下面介绍一下这三个配置文件的基本内容。
前置条件:
- 已经安装
MinGW
或者MSYS2
,并设置了系统的环境变量。 - 安装了
VS Code
以及 C++ 扩展
三个配置文件的内容
tasks.json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "task g++",
"command": "E:\\Program Files\\msys64\\ucrt64\\bin\\g++.exe", /*修改成自己bin目录下的g++.exe,这里的路径和电脑里复制的文件目录有一点不一样,这里是两个反斜杠\\*/
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-I",
"F:\\projects\\C++Projects\\hello", /*修改成自己放c/c++项目的文件夹,这里的路径和电脑里复制的文件目录有一点不一样,这里是两个反斜杠\\*/
"-std=c++17"
],
"options": {
"cwd": "E:\\Program Files\\msys64\\ucrt64\\bin" /*修改成自己bin目录,这里的路径和电脑里复制的文件目录有一点不一样,这里是两个反斜杠\\*/
},
"problemMatcher":[
"$gcc"
],
"group": "build",
}
]
}
launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "E:\\Program Files\\msys64\\ucrt64\\bin\\gdb.exe", /*修改成自己bin目录下的gdb.exe*/
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "task g++"
}
]
}
c_cpp_properties.json
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "E:\\Program Files\\msys64\\ucrt64\\bin\\g++.exe", /* 根据你的编译器路径设置*/
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "${default}"
}
],
"version": 4
}
上述三个配置文件中常用字段的作用
tasks.json
tasks
:包含一个或多个任务的配置,任务的配置包含要执行的命令、参数和执行环境等。type
:指定任务的类型。shell
表示这个任务在 shell 环境中执行,类似于在命令行中运行命令。label
:任务的标签,用于标识任务。这是用户在命令面板中看到并选择要执行的任务名称。command
:定义要执行的命令。args
:定义传递给命令的参数。每个元素都是一个参数,按照顺序传递给命令执行。-g
:生成调试信息。${file}
:当前打开文件的路径。o
:指定输出文件的路径和名称。${fileDirname}\\${fileBasenameNoExtension}.exe
:使用与源文件同目录的路径和源文件的文件名生成可执行文件。-I
:指定额外的头文件搜索路径。F:\\projects\\C++Projects\\hello
:头文件的搜索路径-std=c++17
:使用 C++ 17 标准编译代码。
options
:配置任务执行时的附加选项。cwd
:设置任务执行时的当前工作目录。这里设置为编译器所在目录,因此所有相对路径都会从这个目录开始解析。problemMatcher
:定义问题匹配器,用于解析命令输出中的错误和警告,并将其显示在 VS Code 的问题面板中。$gcc
:使用内置的 GCC 编译器的输出匹配规则,将编译器输出的错误和警告信息捕捉并显示在编辑器中。
group
:将任务分配到一个任务组中。build
:表示该任务属于“构建”任务组,这意味着可以使用Run Build Task
命令来运行。
launch.json
configurations
:包含一个或多个调试配置项的数组。每个配置定义了如何调试特定类型的项目。name
:调试配置项的名称,用来标识和选择不同的调试配置。type
:调试的类型。request
:指定调试的请求类型。launch
表示启动并调试一个程序。另一种常见的类型是attach
,用于附加到已经运行的进程中调试。program
:指定要调试的可执行文件的路径。args
:定义传递给程序的命令行参数。[] 表示没有参数。如果程序需要特定的输入参数,可以在这个数组中添加它们。stopAtEntry
:指定调试器是否在程序入口点暂停。如果设置为 true,程序启动后会在 main() 函数或等效入口点处暂停;如果为 false,程序将直接运行直到遇到断点。cwd
:指定调试时的当前工作目录。这里设置为工作区根目录,即${workspaceFolder}
environment
:定义环境变量。externalConsole
:指定是否在外部控制台(如CMD或终端窗口)中运行程序。true
表示使用外部控制台,这样在调试时可看到完整的输入输出。MIMode
:指定调试器的MI(Machine Interface)
模式。gdb
表示使用 GDB 作为调试器。如果使用LLDB
,则应该设置为lldb
。miDebuggerPath
:指定 MI 调试器的路径。这是调试过程中实际执行调试操作的程序。在此示例中,路径指向 GDB 的可执行文件。
c_cpp_properties.json
configurations
:是一个数组,包含了针对不同平台或环境的配置。name
:配置的名称,用于区分不同的配置。includePath
:指定了 IntelliSense 搜索头文件的路径列表。这里的["${workspaceFolder}/**"]
表示在工作区文件夹下的所有子文件夹中搜索头文件。${workspaceFolder}
表示当前工作区的根目录。defines
:定义了预处理器宏定义的列表,这些宏会在编译时传递给编译器。compilerPath
:定了编译器的路径,这个路径用于 IntelliSense 来识别代码和生成错误提示、自动补全等功能。cStandard
:指定 C 语言标准的版本。cppStandard
:指定 C++ 语言标准的版本。intelliSenseMode
:指定 IntelliSense 使用的编译器模式。用于告诉编译器 VS Code 应该模拟哪个编译器的行为来提供代码补全、错误检测等功能。${default}
表示使用系统检测到的默认模式。可选项一般有 gcc、clang、MSVC 编译器。