c文件include c文件无法建索引,ccls和clangd都无法建索引

c文件include c文件无法建索引,ccls和clangd都无法建索引

a.c

#include "b.c"
int main() {
    testb();
}

b.c

static void testb(){
    printf("b.c");
}

使用ccls或者clangd无法跳转

有么有生成compile_command.json? 没有的话应该是跳转不了的。

生成的compile_command.json中只有a.c的编译命令,b.c不知道怎么手动引进来

大佬们有解决办法吗

题外话:话说有任何非要include一个.c文件的理由吗?是什么编程场景需要这样子写代码呢?有可能lsp server的作者没有考虑这种情形(猜)

clion却能正确找到文件

一切正常…

https://github.com/andoma/vmir 大佬帮忙测试下这个项目? https://github.com/andoma/vmir/blob/master/src/vmir_bitcode_parser.c 从这个文件里函数跳出去看看

没搞懂你什么意思,直接在同目录开了个c文件

跳转过去了,

要改一下makefile。

求教怎么改的 另外你lsp-client用的是什么 clangd还是ccls

SRCS = src/main.c \
	src/vmir.c \
	src/sample.c \
	tlsf/tlsf.c \

clangd

你这属于CMakelists.txt 或者 makefile 没写对,你这个要是make一下估计大概率报错,因为project不知道还有b.c的存在。

这个和clangd、lsp-mode本身没关系,是你的project管理文件(即那个cmakelists,或者makefile 如果用bear)没写对。

Clion可以是因为(现在不清楚,当初它还是免费版时)用的并不是lsp模式,不像lsp+ccls/clangd高度依赖于compile_command.json.

呃,居然是个“老坟”,好吧