Linux Mint下使用vscode编译C++代码
vscode
首先要说明vscode不是IDE,因此本身没有所谓的一键配置、一键编译/运行、大量可视化项目操作选项等功能,实际上是一个拥有丰富插件且可定制化极高的文本编辑器。当我们创建完C++文件后按照在IDE(VS2022等)思路下会下意识的使用快捷键一键编译运行,这时vscode提示你要提供launch.json和tasks.json,这两个文件就是vscode编译C++代码时所要用到的配置文件。当然如果你只是将vscode当作一个文本编辑器,并依然使用终端命令来编译、调试与运行,也是可以的。
tasks.json
{//一个简单的tasks.json示例"version": "2.0.0","tasks": [{"label": "C/C++: g++ build active file", // 任务名称"type": "cppbuild", // 任务类型"command": "/usr/bin/g++", // 执行的编译命令,如果编译器加入了环境变量可直接g++"args": [ // 命令参数"-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}"],"group": {"kind": "build", // 任务分组类型"isDefault": true // 是否为默认任务},"problemMatcher": ["$gcc"], // 错误匹配器"detail": "Generated by VS Code." // 任务描述}]
}
值得一提的是vscode默认是不包含tasks.json的,如果直接编译运行的话仍然提示要提供launch.json
launch.json
{//一个简单的launch.json"configurations": [{"name": "(gdb) 启动","type": "cppdbg", //指定的调试器类型"request": "launch", //调试运行"preLaunchTask": "C/C++: g++ build active file", //如果要求先生成文件再运行时,需要加上这个参数,参数值要和tasks.json中的"label"一致"program": "${workspaceFolder}/${fileBasenameNoExtension}", //运行的文件名也要与生成的文件名一致"args": [],"stopAtEntry": false, //为true表示在运行的第一行代码处停止,为false表示在断点处停止"cwd": "${fileDirname}", //工作目录"environment": [], //设置调试的环境变量"externalConsole": false, //使用外置终端,还是vscode内部终端"MIMode": "gdb", //指定的调试器,如果环境变量没有调试器的目录,需要加上参数"miDebuggerPath",值为调试器的目录"setupCommands": [ //调试器内部命令{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}
当两个配置文件都编写完毕后,将其放入.vscode文件夹中,然后回到C++代码中即可正常编译、调试与运行。关于tasks.json和tasks.json其他高级命令与用法可参考微软vscode官方文档。