1. 跳转
1.1. GNU Global 标签式跳转
场景:
用 GNU Global,基于标签式的跳转。
插件:
- "C/C++ GNU Global" 插件;
- 本地机器上的 GNU Global 软件。
优缺点:
- 基于标签式跳转,相当于纯文本模式,最好只用于纯阅读代码场景。至于这种标签式跳转在纯阅读代码场景下效果到底怎么样,还需要体验完善。
- 没有智能感知,不能提供很好的智能补全效果,修改了代码后需要重新建立标签索引。
方法:
《VSCode中通过GNU Global实现C++函数跳转和代码自动补全》
1.2. C/C++ 插件 IntelliSense 式跳转
场景:
基于 "C/C++" 插件使用 IntelliSense 模式跳转。
插件:
- "C/C++" 插件。
优缺点:
- 不依赖 makefile,CMakeLists,compile_command.json 文件,不挑剔代码,基于智能感知,能提供差不多的跳转体验与智能补全体验,代码环境复杂时一般用这种模式。
- 对于重载等跳转支持不是很友好,它很多情况下不知道调用的哪个重载,有些符号也跳转不了,要结合搜索功能一起使用。
- "C/C++" 插件也可指定 compile_command.json 模式,但并没有 "clangd" 插件工作的好,在
.vscode/c_cpp_properties.json
填下如下类似内容:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compilerPath": "/usr/bin/clang",
"cStandard": "c17",
"cppStandard": "c++14",
"intelliSenseMode": "linux-clang-x64",
"compileCommands": "${workspaceFolder}/compile_commands.json"
}
],
"version": 4
}
其中 compileCommands
字段指定 compile_commands.json
的位置。
方法:
安装 "C/C++" 插件后,简单配置后就能跳转了。
1.3. C/C++ 插件标签式跳转
暂时未研究,待补充完善。
1.4. clangd 插件跳转
场景:
基于 "clangd" 插件跳转。
插件:
- "clangd" 插件。
- 本地机器上的 clangd 软件。
优缺点:
- 依赖 compile_command.json 文件,但体验最佳。
方法:
《VSCode + WSL + clangd +CMake + CMake Tools搭建C++开发环境》
2. 运行与调试
2.1. C/C++ 插件运行与调试
场景:
编写单文件或者很少文件的代码。
插件:
- "C/C++" 插件。
优缺点:
- 仅限于编写单文件或者很少文件的代码。
方法:
- 安装 gcc 等编译工具。
- 点击 VSCode 菜单栏 "运行" > "启动调试/以非调试模式运行" 后 "C/C++" 插件会生成 task.json 与 lanch.json 即可运行与调试。
2.2. "C/C++" + CMake + CMake Tools 插件调试
场景:
编写大型项目,使用 cmake 构建时使用。
插件:
- "C/C++" 插件;
- "CMake" 插件;
- "CMake Tools" 插件。
优缺点:
- "C/C++" 的智能感知没有 "clangd" 好,但 "clangd" 依赖
compile_commands.json
,有很大型项目没有条件生成compile_commands.json
。
方法:
-
禁用 "clangd" 插件。
-
安装 gcc 等编译工具。
-
用 "CMake: Build" 指令编译。
-
打断点,然后用 "CMake: Debug" 指令启动调试,用 "CMake: Run Without Debugging" 指令以非调试模式运行。若程序需要启动参数,则在用户级
setting.json
中添加如下内容:"cmake.debugConfig": { "args": ["arg1", "arg2"], }
-
也可以在 VSCode 菜单栏依次点击 "运行" > "启动调试/以非调试模式运行",根据提示自动生成
task.json
,然后就能运行与调试了。如需要运行参数,则在task.json
对应位置添加运行参数即可。
2.3. clangd + CMake + CMake Tools 插件调试
场景:
编写大型项目,使用 cmake 构建时使用。
插件:
- "clangd" 插件;
- "CodeLLDB" 插件;
- "CMake" 插件;
- "CMake Tools" 插件。
优缺点:
- "clangd" 插件的智能感知比较不错,编写代码时体验比较好。但 "clangd" 依赖
compile_commands.json
,有很大型项目没有条件生成compile_commands.json
。
方法:
- 禁用 "C/C++" 插件。
- 安装 gcc 等编译工具。
- 用 "CMake: Build" 指令编译。
- 打断点,在 VSCode 菜单栏依次点击 "运行" > "启动调试/以非调试模式运行 "启动运行与调试。首次会提示错误,点击确定后会自动帮你创建
launch.json
文件(前提是正确安装了"CodeLLDB" 插件),等launch.json
文件创建完毕后,再次启动就能运行与调试代码了。
若没有自动创建 launch.json
文件,则自己手动创建,并放于工程的 .vscode
目录下。
launch.json
文件内容:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/<executable file>",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
参数说明:
- program:指定 "CMake: Build" 生成的二进制的路径,一般在
Build
目录下; - args:程序启动参数。