如何为具有clangd支持的C ++设置VS Code?

时间:2018-08-16 21:49:39

标签: c++ visual-studio-code clang language-server-protocol

免责声明:我对VS Code完全了解,所以请对我温柔。 :-)

我正在尝试为 C ++ 设置VS Code
但是,我明确希望进行设置,以便在处理C ++文件时使用Language Server Protocolclangd进行通信。

我已经在我的(Ubuntu Linux)系统上安装了clangd,并且在VS Code市场上安装了官方的"vscode-clangd"扩展,并且还调整了它的设置,以便{它。

但是,现在我迷路了。
当我打开clangd*.cpp文件时,VS Code向我推荐了其他一些扩展名(例如,具有IntelliSense支持的官方Microsoft "C/C++"扩展名),但是我看不到{{1 }}确实对我有帮助。

使用Microsoft的“ C / C ++”扩展名似乎可以立即使用,但是如何使用*.hpp

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

它无需任何配置即可工作。 我已经在Windows上对其进行了测试,并且可以正常工作-我在Visual Studio Code中没有安装C / C ++扩展名,只是vscode-clangd,它会报告错误,提供代码完成等信息。 这意味着扩展有效,因为“核心” Visual Studio Code中没有此类功能。 Visual Studio Code仍然建议使用流行的C / C ++扩展,但是您可以忽略它,但这并不意味着vscode-clangd无法正常工作。

请注意,您正在编辑的文件必须具有.cpp.c之类的标准扩展名,才能被vscode-clangd识别并执行。 有关所有受支持的扩展名的列表,请参见the extension's source code

对于简单的项目,没有配置可能就足够了,但是对于更复杂的项目,您当然需要让Clang知道诸如目录,编译标志之类的内容。 这可以通过创建一个compile_flags.txt文件来完成,您在其中键入Clang的参数,每行一个。 您可以将此文件与源文件放在同一文件夹中,也可以放在树的任何位置。 编辑此文件后,必须重新启动Visual Studio Code,以使更改生效。

或者,您可以创建(或让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