我几乎每天都在专业地使用 VSCode for C 语言 +1 年了。现在,我遇到了一些真正影响我生产力的事情。
当我打开一个大项目时,功能"转到定义,转到声明,查看..."等不起作用。我不知道如何描述这个项目有多"大"。有 +26k 行的源文件,编译最多可能需要 45 分钟。当我使用规模更合理的项目时,我没有问题,所以直到现在,由于我的项目规模,我认为这是程序的限制,并辞职了。现在,我在这一点上真的很烦恼,想找到一个解决方案。
令我印象深刻的是,在整个项目中搜索(Ctrl + Shift + F(速度极快且效果出色,因此VS似乎能够"处理"这个大项目。
- C/C++ 从最新版本 v0.28.3 Microsoft扩展
- VSCode 最新版本 1.46.1
- 视窗 10
你认为有解决方案吗?您是否在大型项目中使用过VSCode?
编辑:我的意思是,通过"不工作",它试图执行该操作,但无限期地保持"思考"。
最可能的不是"不工作",而只是"相当慢"。对于使用 Visual Studio 代码的 C/C++ 扩展的 C/C++ 项目,这是一个已知问题。智能感知的索引器需要一些时间(特别是如果你没有通过limitSymbolsToIncludedHeaders
或类似的东西来限制它(。您可以尝试通过在c_cpp_properties.json
中使用显式浏览路径来减少解析文件的数量,例如
"browse": {
"path": [
"/usr/include/",
"/usr/local/include/",
"${workspaceRoot}/../include",
"${workspaceRoot}/dir1",
"${workspaceRoot}/dir2",
"${workspaceRoot}/dir3/src/c++",
"${workspaceRoot}/dir5",
"${workspaceRoot}/dir6/src",
"${workspaceRoot}/dir7/src",
"${workspaceRoot}/dir4"
],
并排除例如不需要自动完成/转到符号/转到定义的 IDE/SDK 文件。
有关更多说明,请参阅:https://github.com/microsoft/vscode-cpptools/issues/1695
clangd
插件
对于 C,我在clangd
插件上取得了非常好的结果:https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd 它将 clangd 集成到 vscode 中。
该插件使用 clang 解析基于compile_commads.json
数据库的代码,该数据库包含构建系统生成的确切编译命令,因此往往会产生最准确的结果。
我已经在以下位置更详细地介绍了它的设置: VSCode "转到定义" 不起作用