【问题标题】:Can I use GCC compiler AND Clangd Language Server?我可以使用 GCC 编译器和 Clangd 语言服务器吗?
【发布时间】:2020-06-28 15:08:13
【问题描述】:

据我所知,我正在开发一个使用 GCC 库 (SFML) 的项目,该库不适用于 clang。我正在使用带有 vim 的 COC 来完成代码,但对于 C++,它需要 clangd。有没有办法使用 GCC 作为我的编译器,但仍然使用 clangd 语言服务器?

我还听说可能有一种方法可以让 clang 识别 GCC 库/头文件,但我一直无法让它正常工作。如果有人能指出我正确的方向,那也会有帮助。但是我习惯了 GCC(我从开始编写 C++ 就一直在使用它),所以能够使用 clangd GCC 会更好。

【问题讨论】:

  • ClangD 是一个语言服务器,它协助 IDE。当然,在 GCC 旁边使用 clang 进行编译是个好主意,但是,如果您使用 clangd 构建索引,则不需要自己专门使用 clang 进行编译
  • 如何使用ycm_core -- YouCompleteMe?
  • @forzenOne,是的,不。我试过一次,它只是不适合我。到目前为止,COC(完成的征服者)的工作方式更好。

标签: gcc vim clang clangd


【解决方案1】:

是的。我用 ccls 来做(它也是基于 clang 的)。

鉴于我安装的 clang 不是 标准 的(我编译它,调整它以默认使用 libc++,然后我将它安装在我个人空间的某个地方)我必须注入头文件的路径clang 知道但其他基于 clang 的工具不知道的文件。

我得到它们

clang++ -E -xc++ - -Wp,-v < /dev/null

关于与当前项目相关的其他选项,我确保有一个compile_commands.json编译数据库(由CMake生成,如果我没有其他选择,请承担),并且ccls可以工作从那里。我希望 clangd 在这些方面非常相似。

【讨论】:

  • 我以前用过ccls,效果很好!唯一的问题是,要将其与 COC 和 vim 一起使用,您必须将其添加为自定义语言服务器,因此它不能顺利集成。对于 clangd,我可以使用 coc-clangd 扩展,这样会更好。
  • 那么相同的 compile_commands.json 是否适用于 ccls 和 clangd? .ccls 文件呢?能否将其重命名为 compile_flags.txt 并作为替代品使用?
  • IMO,相同的 compile_commands.json 是否应该适用于 ccls 和 clangd。我不知道你的另外两个问题I inject these directories automatically from my .vimrc
  • .ccls 文件等同于 compile_commands.json 的命令部分,减去 /usr/bin/clang++ 和 compile_flags.txt。如果 compile_commands.json 会以同样的方式工作,我会假设 compile_flags.txt 也会。我必须自己测试一下。
【解决方案2】:

Ops,回答错误的问题。 但是对于那些使用ccls的人:

  1. 在您的项目目录中创建一个.ccls 文件并将--gcc-toolchain=/usr 附加到它。
  2. 使用this tool生成compile_commands.json文件

https://github.com/MaskRay/ccls/wiki/FAQ#compiling-with-gcc

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多