gpt4 book ai didi

c++ - 如何在 coc-settings.json 文件中添加语言服务器的包含路径?

转载 作者:行者123 更新时间:2023-12-02 10:18:23 39 4
gpt4 key购买 nike

我正在使用 neovim 插件 "coc-nvim" ,作为 C/C++ 的 IntelliSense 工具。据我所知,这个插件实际上是 ccls、clangd 和 cquery 等语言服务器的客户端。我在我的系统上安装了所有这些语言服务器,并将它们配置为与 coc-nvim 一起工作。所以我可以在我的 c/c++ 文件中获得自动完成和通用标题列表(例如 stdio 和 ...)。但由于我在 ros 平台上工作,我想将 ros(/opt/ros/kinetic/include/**) 的 header 添加到我的语言服务器的默认包含路径中。如果没有这个选项,在每个项目的开头我必须添加一个虚拟 ros 节点并使用 catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=YES 编译以生成 compile_commands.json 文件以访问 ros header 。

coc.nvim 的设置在 init.vim 文件旁边,在一个名为“coc-settings.json”的文件中,我的 coc 设置文件的内容如下:

{

"languageserver": {
"clangd": {
"command": "clangd",
"rootPatterns": ["compile_flags.txt", "compile_commands.json"],
"filetypes": ["c", "cpp", "objc", "objcpp"]
},
"cquery": {
"command": "/home/amirrezasadeghi/ManBuildLibs/cquery/build/cquery",
"args": ["--log-file=/tmp/cq.log"],
"filetypes": ["c", "cpp"],
"rootPatterns": ["compile_flags.txt", "compile_commands.json", ".git/", ".hg/"],
"initializationOptions": {
"cacheDirectory": "/tmp/cquery"
}
},
"ccls": {
"command": "ccls",
"filetypes": ["c", "cpp", "objc", "objcpp"],
"rootPatterns": [".ccls", "compile_commands.json", ".git/", ".hg/"],
"initializationOptions": {
"cache": {
"directory": "/tmp/ccls"
}
}
}
},
"clangd.semanticHighlighting": true
}

所以我的主要问题是如何向这些设置添加 ros 包含路径。我检查了 wiki page of coc.nvim但找不到用户包含路径的任何选项。另外,我检查了 clangd 的选项并尝试添加,"args":["-I/opt/ros/kinetic/include/"],到相应的 block ,但它没有用。另外,我添加了 .cquery文件,但仍然对建议的 header 列表没有影响。

抱歉说来话长,感谢您的宝贵时间。

编辑:最好使用 clangd LSP 而不是 ccls。因为它更快并且有更好的文档。谢谢!

编辑(2020 年 4 月 12 日):我发现的最佳解决方案是通过使用 ccls 提供的 extraArgs 使用 ccls 语言服务器。因此,如果您将 "clang" 字段添加到 ccls 配置中,我们可以在自动完成中包含 ros header 。

"initializationOptions": {                                                                                        
"cache": {
"directory": "/tmp/ccls"
},
"clang": {
"extraArgs": [
"-I",
"/opt/ros/kinetic/include/"
]
}
}

但正如我提到的,如果可能的话,我想使用 clangd。我到处检查但没有答案。谁能帮我? (请!)。

最佳答案

这并没有按照您要求的方式解决问题,但我发现它是一个有用的解决方案。

和你一样,我用过catkin_make生成 compile_commands.json使用:

catkin_make --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=1

但是,我在 <catkin_ws>/build/compile_commands.json 之间创建了一个符号链接(symbolic link)和 <catkin_ws>/compile_commands.json .由于 clangd 在父目录中搜索 compile_commands.json ,这可由工作区内的任何包/节点访问。

因此,只有一个compile_commands.json需要为整个工作区生成,并且只需要在依赖项发生变化时重新生成。

关于c++ - 如何在 coc-settings.json 文件中添加语言服务器的包含路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61150687/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com