安装Code Runner
插件,然后在设置中配置Exectuor Map/setting.json
文件,配置如下
可以在插件中找到Runner插件,然后点击 右下角的设置->扩展设置->Exectuor Map->setting.json 中找到相关配置
{
"explorer.confirmDelete": false,
"python.pythonPath": "/Users/wjq/anaconda3/bin/python",
"C_Cpp.updateChannel": "/usr/local/g++",
"workbench.iconTheme": "vs-minimal",
"terminal.integrated.shell.linux": "/bin/bash",
"explorer.confirmDragAndDrop": false,
"window.zoomLevel": 0,
"code-runner.executorMap": {
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
},
"code-runner.runInTerminal": true,
"terminal.integrated.inheritEnv": false,
"python.dataScience.askForKernelRestart": false
}
主要是配置 终端运行命令(路径+shell执行命令),相当于我们使用Runner
运行c++
程序时,相当于在终端中执行
cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt
,
调到目标文件路径,然后使用g++
编译目标源文件,并且执行生成文件;相应的,对于python
之类的也是同样的道理,配置中我的python解释器使用的/Users/wjq/anaconda3/bin/python
,对于多个python环境的一定要修改为自己使用的环境;
使用 Vs Code 自带的配置运行C++,需要设置两个json文件,其中launch.json文件(负责调试程序),另一个tasks.json文件(负责编译程序),下面简单介绍一个对应文件如何编写和使用.
主要是对代码进行编译,而该编译操作命令写成一个任务,使用vscode的task用来编译自己写的代码。
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ build active file",
"command": "g++",
"args": [
"-g",
"-std=c++11",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build"
}
]
}
参数说明:
g++ build active file
),和下文介绍的launch有联系(shell/Process)
,其中shell表示先打开shell,再执行输入命令;process则直接执行命令g++ -g -std=c++11 file.cpp -o dir/filebasename
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "g++ build active file",
"terminal": "integrated"
}
]
}
参数说明:
后面介绍的mac调试c++不能正确显示容器内容,就是修改这个配置
task.json
生成的执行文件保持相同,"${fileDirname}/${fileBasenameNoExtension}"
task.json
中的label(g++ build active file)
保持一致,相当于调试之前需要先执行 编译命令;在macOS下使用VS code进行C++调试时,碰到vector、set、map等类的内容无法正常显示,只显示为size == 0
,原因是macOS的c++编译器更新比较慢,对于STL的debug支持不是太好;
搜了很多资料,最后在这个 issue 下发现了遇到相同问题的人,最终解决,问题的关键就在于使用 CodeLLDB 插件代替 vscode 自带的 lldb插件。
安装 CodeLLDB 插件
安装CodeLLDB插件,使用简单,只需将launch.json
的type
设置为lldb
即可(原生类型一般为cppdbg/cppvsdbg
);
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "lldb",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "g++ build active file",
"terminal": "integrated"
}
]
}