@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
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.