@pi 我在rust-analyzer 遇到容易理解但令人想砸电脑的问题。
@shrik3 我clang好像突然找不到stdlib了(项目内include都能解析),但同个parent dir下另个项目就完全没事,并且做ccls faq里的范例也无法复现。。
@pi (sanity check)你是不是更新过系统之后忘记重启了。

以及如果项目能正常编译的话,清空ccls缓存,再重新生成一下compile_commands.json 试试?
@shrik3 试了下重启+重来 不行。。我是用bear生成的json,如果项目是cmake的话有什么要注意的吗?我之前没问题的project都是简单原地make的……
Follow

@pi @shrik3 set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 可以生成compile_commands.json到build/,你可以软链接到项目根目录。

@fulkrum @shrik3 好了!感谢!!看了下应该是我用bear错了,cmake有两个命令,中间分号,估计后半段没给bear……
@fulkrum @pi 对,我是这么做的。btw cmake 生成的compile_commands.json (至少我手里这个)的路径是相对路径绝对路径混着来,所以移动东西的时候就很蛋疼。。

ccls 好的一点是可以指定 off-tree build目录,但clangd不行。后者的compile_commands.json 得是放在根目录所以非得弄个软链接不可。

还有一个问题是,有的cmake项目(again,比如我手里这个)的一些config类头文件并不是直接放在代码文件里的,而是经由 cmake 生成。。 所以自然而然就找不到头文件,这种情况我就手动跑了一边编译,把中间生成的头文件复制出来然后。。妈的太丑陋了我不想说了。
@shrik3 @fulkrum :meow-cosmic: 输入法草!!cmake language server就这什么黑魔法了……
Sign in to participate in the conversation
CleverLibre Social

CleverLibre Social is an inclusive social instance for open discussion, learning, and community.
All cultures welcome.
Hate speech and harassment strictly forbidden.