如何设置支持clangd的C++ VS代码?

hwamh0ep  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(257)
  • 免责声明:我对VS代码完全是新手,所以,请对我温柔点。:-)*

我正在尝试为**C++**设置VS Code
但是,我明确地希望设置它,以便它在处理C++文件时使用Language Server Protocolclangd通信。
我已经在我的(Ubuntu Linux)系统上安装了clangd,并从VS代码市场安装了官方的"vscode-clangd"扩展,我还调整了它的设置,以便clangd可以被它找到。
但是,现在我迷失了。
当我打开*.cpp*.hpp文件时,VS Code向我推荐了一些其他扩展(例如,带有智能感知支持的Microsoft官方"C/C++"扩展),但我完全看不出clangd在哪里以及如何帮助我。
使用Microsoft的"C/C ++"扩展似乎可以开箱即用,但如何使用clangd
谢谢你的帮助。

xcitsw88

xcitsw881#

我可以共享我的一些配置。
微软的“C/C++”扩展是伟大的调试,我认为你应该安装它。
同时,Clangd在查找引用时提供了更准确的结果。因此,我的建议是保留官方的C/C++扩展用于调试,但禁用其智能感知。

"C_Cpp.intelliSenseEngine": "Disabled",
        
    "clangd.path": "/path/to/your/clangd",
    "clangd.arguments": ["-log=verbose", 
                         "-pretty", 
                         "--background-index", 
                         //"--query-driver=/bin/arm-buildroot-linux-gnueabihf-g++", //for cross compile usage
                         "--compile-commands-dir=/path/to/your/compile_commands_dir/"]

请始终参考the official website,还有更多设置,如过滤掉编译参数等。正确配置后,您将在“问题”和“终端”旁边的“输出”窗口中看到clangd的输出。

ddhy6vgd

ddhy6vgd2#

它应该可以在没有任何配置的情况下工作。我已经在Windows上测试过了,它工作得很好-我没有在Visual Studio代码中安装C/C扩展,只有vscode-clangd,它报告错误,提供代码完成等。这意味着扩展工作,因为在“核心”Visual Studio代码中没有这样的功能。Visual Studio代码仍然建议流行的C/C扩展,但是你可以忽略它,这并不意味着vscode-clangd不工作。
请注意,您正在编辑的文件必须具有.cpp.c这样的标准扩展名,才能被vscode-clangd识别和操作。请参阅扩展名的源代码以获取所有支持的扩展名列表。
对于简单的项目,没有配置就足够了,但是对于更复杂的项目,你当然需要让Clang知道一些东西,比如include目录,编译标志等等。这可以通过创建一个compile_flags.txt文件来完成,在这个文件中你输入Clang的参数,每行一个参数。你可以把这个文件和你的源文件放在同一个文件夹中,或者放在树中的任何地方。编辑完这个文件后,必须重新启动Visual Studio代码,更改才能生效。
或者,您可以创建(或让CMake生成)一个compile_commands.json文件,其语法如下:

[
  { "directory": "/home/user/llvm/build",
    "command": "/usr/bin/clang++ -Irelative -DSOMEDEF=\"With spaces, quotes and \\-es.\" -c -o file.o file.cc",
    "file": "file.cc" },
  ...
]

有关详细信息,请参见Clang docs

相关问题