首页 > 解决方案 > clangd 中是否有“includePath”选项?

问题描述

我曾经使用 VSCode C/C++扩展。这个扩展中有一个特性(在一个 json 文件中),称为“includePath”,我可以为我的头文件设置路径,所以在不执行 CMake 或 make 的情况下,我会从这些文件中获得我的头文件和代码完成的建议.

现在我已经切换到 neovim 和 clangd 作为代码完成的语言服务器。我搜索了很多以在 clangd 选项中找到相应的功能,但除了这个链接之外我找不到任何东西。

由于clangd是一个强大的语言服务器,我想知道它是否没有这样的功能。所以我想知道clangd中真的有这样的功能吗?如果是,我该如何使用它?

注意:我使用了一个名为"coc-clangd"的语言客户端。我不知道这是否重要。

标签: c++cneovimclangd

解决方案


Clangd 使用compile_commands.json数据库文件,其中包含项目中每个文件的标志(例如包含目录)。但是这个文件是自动生成的,所以对它的所有修改最终都会被覆盖。您可以要求 CMake 使用-DCMAKE_CXX_FLAGS命令行参数添加任何自定义编译标志。

系统标头 ( #include <file.h>) 的示例:

cmake -DCMAKE_CXX_FLAGS="-isystem /path/to/includes" /path/to/source

对于项目标题 ( #include "file.h"):

cmake -DCMAKE_CXX_FLAGS=-Ipath/to/includes /path/to/source

此外,您可以设置CXXFLAGS环境变量:

export CXXFLAGS="-isystem /path/to/includes"
cmake path/to/sources

之后,新标志应该出现在您的compile_commands.json文件中。


推荐阅读