若要使用VSCode来开发C++程序,则应该了解以下三种配置文件,分别为:
tasks.json:编译器相关的配置文件。比如,设置编译指令。
注:对于复杂的编译任务(涉及多个源文件的编译),不如直接编写Makefile文件来的方便。
launch.json:调试器相关的配置文件。比如,调试器的路径、编译生成的可执行文件路径。
注:若源文件需要调试,编译生成可执行文件时必须加上-g
选项,否则断点无法生效。
c_cpp_properties.json:编译器路径和智能代码提示相关的配置文件。
菜单栏选择 " Terminal/Configure Tasks"。
若要支持C++高版本的编译,比如C++17,可以在参数列表args
中添加一行-std=c++17
。当然,前提是编译器支持。
注:若编译器支持C++17,且在参数列表args
中添加一行-std=c++17
,然后打印__cplusplus
,结果就会变成201703
。
{
"version": "2.0.0",
"tasks": [
{
"label": "build", // 必须与launch.json中的"preLaunchTask"一致
"type": "shell", // 可以选择shell或者process
"command": "g++", // 运行的命令
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/build/${fileBasenameNoExtension}.exe"
],
// 将该task添加到build组,可以使用Ctrl+Shift+B快捷键来找到编译命令,命令名称就是"label"
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
可以观察tasks.json
中的command
和args
这两项,翻译过来其实就是如下指令:
g++ -g ${file} -o ${fileDirname}/build/${fileBasenameNoExtension}.exe
以上指令中,${file}
等都是VScode设置的变量,可以参考官方文档或这里。这里简单介绍一下这些变量的含义:
${file}
:当前正在编辑的文件名,包括绝对路径、文件名以及后缀;${fileDirname}
:当前打开的文件所在的绝对路径,不包括文件名;${fileBasenameNoExtension}
:当前打开的文件的文件名,不包括路径和后缀名。比如,当前打开的文件路径为D:/test/hello.cpp
,那么这三个变量分别为
${file}
:D:/test/hello.cpp
${fileDirname}
:D:/test
${fileBasenameNoExtension}
:hello
创建方式如下图所示。
选择GDB作为调试器,然后就会生成一个配置为空的launch.json
的文件。在"configurations"中输入gdb可以自动生成默认配置。一般,修改默认配置中的"program"和"miDebuggerPath"即可完成绝大部分的设置。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": []
}
该配置文件中主要需要配置如下选项:
在configurations中输入gdb可以自动生成默认配置。
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Software\\TDM-GCC-64\\bin\\gdb64.exe", // 调试器路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
可以使用快捷键Ctrl+Shift+P,输入C/C++:Edit Configuration。
该配置文件中主要需要配置如下选项:
boost
库的头文件。只有正常添加了搜索路径,Vscode才能正确找到它们。{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/local/include" // boost头文件
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
cc",
"cStandard": "c11",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}