vim 我可以使用GCC编译器和Clangd语言服务器吗?

yshpjwxd  于 2023-08-05  发布在  其他
关注(0)|答案(3)|浏览(180)

我正在做一个使用GCC库(SFML)的项目,据我所知,它不适用于clang。我使用COC和vim来完成代码,但对于C它需要clangd。有没有一种方法可以使用GCC作为我的编译器,但仍然使用clangd语言服务器?
我还听说有一种方法可以让clang识别GCC库/头文件,但我从来没有能够让它正常工作。如果有人能给我指出正确的方向,那也会很有帮助。但是我已经习惯了GCC(自从我开始C
编程以来就一直在使用它),所以能够使用clangd * 和 * GCC会更好。

93ze6v8z

93ze6v8z1#

是的。我用ccls(也是基于clang的)做的。
由于我的clang安装不是标准的(我编译了它,默认情况下将其调优为使用libc++,并将其安装在我个人空间的某个地方),我必须注入clang已知但其他基于clang的工具未知的头文件的路径。
我是用

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

字符串
关于与当前项目相关的其他选项,我确保有一个compile_commands.json * 编译数据库 *(由CMake生成,如果没有其他选择,则由bear生成),ccls可以从那里工作。我预计clangd在这些方面会相当相似。

dffbzjpn

dffbzjpn2#

在ubuntu上,如果你想使用gcc工具链,你可以通过

  1. # Replace gcc with the compiler you want to use
  2. gcc -v -c -xc++ /dev/null

字符串
您将看到如下输出:

  • 但是您必须只添加从#include <...> search starts here:开始的行
  1. #include "..." search starts here:
  2. #include <...> search starts here:
  3. /usr/include/c++/11
  4. /usr/include/x86_64-linux-gnu/c++/11
  5. /usr/include/c++/11/backward
  6. /usr/lib/gcc/x86_64-linux-gnu/11/include
  7. /usr/local/include
  8. /usr/include/x86_64-linux-gnu
  9. /usr/include
  10. End of search list.


现在,您的~/.config/clangd/config.yaml看起来像这样:

  1. CompileFlags:
  2. Add: [-isystem,/usr/include/,-I/usr/include/c++/11,-I/usr/include/x86_64-linux-gnu/c++/11, -I/usr/include/x86_64-linux-gnu/c++/11,-I/usr/include/c++/11/backward,-I/usr/lib/gcc/x86_64-linux-gnu/11/include,-I/usr/local/include,-I/usr/include/x86_64-linux-gnu,-I/usr/include]


参考文件:

展开查看全部
wswtfjt7

wswtfjt73#

指挥中心回答错问题了对于使用ccls的用户:
1.在项目目录中创建一个.ccls文件,并将--gcc-toolchain=/usr追加到该文件中。
1.使用this tool生成compile_commands.json文件
请参阅https://github.com/MaskRay/ccls/wiki/FAQ#compiling-with-gcc

相关问题