这是因为 c 语言项目本来就没有啥组织规范。只要设置好头文件路径,链接库路径,写好 make 脚本能跑起来就行了。例如头文件放在 include/xxoo.h 路径下,但是编码的时候,直接写成 #include “xxoo.h” ,lsp 就会理解成 xxoo.h 在项目根路径下。办法就是把项目 build 一遍生成 compile_commands.json ,把项目的编译信息喂给 lsp.
PS: 对于 c/c++ ,我更喜好 ycm 的方式,在项目路径放一个小脚本,稍微设置下头文件的路径就可以工作。
2 个赞
PostgreSQL 社区建议我使用 Doxygen
刚才网上找了找,似乎如同ksqsf和wcq062821所说办法,不是cmake项目就是比较折腾,而且你得换lsp-sever为ccls
1 个赞
wsw
24
clangd也可以再项目根目录放个compile_flags.txt。
就不用折腾ycm了
ksqsf
25
我的做法就是 ./configure && bear – make ,并不算折腾。
clangd 也可以
1 个赞
使用 bear make 来生成 complie database 即可
巧了。。我之前也要阅读 PG 的代码,但是也很奇怪用 clangd 或者 ccls 就是效果很不好,但是 c++ 项目(即使很大),效果也非常不错。我当时也怀疑是纯 C 的问题。。。
aeghn
30
1、可以先使用 https://github.com/Melinysh/PyMake 生成makefile
2、再使用bear – make生成 compile_commands.json
3、最后用clangd作为Emacs的lsp server解析项目
1 个赞
现在我发现 citre + ctags 那个是真的强
PG 你能很好的用 ctrags+citre 索引不