我曾经使用过VSCode C/C++扩展。在这个扩展中(在一个json文件中)有一个叫做"includePath“的特性,我可以设置我的头文件的路径,所以在不执行CMake或make的情况下,我会得到我的头文件的建议和来自这些文件的代码完成。
现在我切换到了neovim和clangd作为代码完成的语言服务器。我搜索了很多次,想在clangd选项中找到对应的特性,但除了this link之外,我找不到更多的东西。
既然clangd是一个强大的语言服务器,我想知道它是不是没有这样的功能。所以我想知道clangd中真的有这样的功能吗?如果是,我该如何使用它呢?
注意:我使用了一种名为"coc-clangd"的语言客户端。我不知道这是否重要。
发布于 2021-04-22 14:12:58
Clangd使用compile_commands.json
数据库文件,其中包含项目中每个文件的标志(如包含目录)。但是这个文件是自动生成的,所以对它的所有修改最终都会被覆盖。您可以使用-DCMAKE_CXX_FLAGS
命令行参数要求CMake添加任何自定义编译标志。
系统标头(#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
文件中。
发布于 2021-09-21 12:46:26
也许这是有用的:https://clangd.llvm.org/config
在源目录的顶层创建一个名为'.clangd‘的文件。添加这些内容。
CompileFlags: # Tweak the parse settings
Add:
- "-I=[folder]"
但我认为这是不推荐的,所有包含目录都应该添加到CMakeLists.txt
文件中。
https://stackoverflow.com/questions/61206703
复制相似问题