VS Code中如何跳转至自行编译的C++函数实现(以leveldb为例)
问题原因
该问题是VS Code的IntelliSense索引不到leveldb的函数实现源码导致的:make install只会安装对外暴露的头文件和库文件,函数实现的源代码仍保留在你当初编译leveldb的本地源码目录中,默认不在IDE的索引范围内。
解决步骤
- 首先确认项目的
CMakeLists.txt中已正确配置leveldb依赖,示例配置如下:
# 方式1:优先用find_package查找已安装的leveldb find_package(leveldb REQUIRED) # your_target_name替换为你自己项目的目标名 target_link_libraries(your_target_name PRIVATE leveldb::leveldb) # 方式2:如果find_package找不到,手动指定安装路径 include_directories(/usr/local/include) link_directories(/usr/local/lib) target_link_libraries(your_target_name PRIVATE leveldb)
- 将leveldb本地源码目录加入VS Code C/C++扩展的索引路径
- 按下
Ctrl+Shift+P(Mac系统为Cmd+Shift+P),输入C/C++: Edit Configurations (JSON)打开配置文件 - 在
includePath数组中追加你当初编译leveldb的源码根目录,示例如下:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/local/include", "/home/your_username/code/leveldb/**" // 替换为你本地的leveldb源码实际路径 ], "configurationProvider": "ms-vscode.cmake-tools" } ], "version": 4 } - 按下
- 重置索引并重载窗口
- 按下
Ctrl+Shift+P,输入C/C++: Reset IntelliSense Database执行索引重置 - 再输入
Developer: Reload Window重载VS Code窗口 - 等待CMake扩展重新配置完成、IntelliSense全量索引跑完后,即可正常跳转函数实现
- 按下
可选优化方案
如果你的项目长期依赖leveldb,可直接将leveldb源码作为子模块引入当前项目,在CMakeLists.txt中通过add_subdirectory(third_party/leveldb)引入依赖,IDE会自动索引所有leveldb源码,无需额外配置路径。
内容的提问来源于stack exchange,提问作者ruokuanwu
相关产品推荐
相关产品推荐

