ccls头文件补全

Mac Mojave平台,使用的是Spacemacs develop分支,emacs 26.1

不知道为啥没有补全头文件,只能提示#include<> 和#include" "不能提示具体头文件内容

ccls也会对string报错

尝试过brew install --HEAD ccls和自己编译的ccls都有同样问题
也尝试了FAQ · MaskRay/ccls Wiki · GitHub

.ccls文件内容:
%clang
-Wall
%c -std=gnu11
%cpp -std=c++17
%cpp -stdlib=libc++

不知道有没有遇到过相同问题的?

我试了下,还是无法补全

重新生成了complie_commands.json

我的c++头文件目录比较奇怪 我找到位置是在/usr/local/opt/llvm/include/c++/v1

嗯嗯 链接过了

嗯嗯 非常感谢 我发现/Library/Developer/CommandLineTools/usr里面也有c++头文件 我尝试一下

你解决了么。 我回我的mac上测试了一下。好像也不行。。。但是linux下可以

@MaskRay 麻烦大佬看一下

我也是一样的环境

Mac os10.14

brew install ccls

有进展吗 方法试了个遍。。好像还是不行 而且string还会报错

没有 尝试了/Library下面的c++路径 但是还是无效 头文件无法补全 vector string都会报错

我也是尝试了好多办法 在ccls下面的wiki和issue查了一天 还是没能解决,不知道有没有大佬能提供下解决方法

我Mac下跟你一模一样的情况。。只能等作者大佬出来解决一下了

(帖子被作者删除,如无标记将在 24 小时后自动删除)

But maybe he know what’s wrong, or someone like @twlz0ne the author of homebrew-ccls may know more about ccls on osx.

我在linux下用的ccls,我这里补全头文件的时候,系统的头文件是可以补全的,但是项目的头文件就不行。我一直以为是ccls不支持补全项目的头文件的呀。

项目头文件是自己定义的头文件么? 这个应该在CMakeList.txt或者.ccls中添加路径就可以补全吧? 但是我在osx上都没法补全

是的呀,我怀疑是不是我的compile_commands.json的问题,因为我在compile_commands.json里面找不到头文件的项,所以我打开头文件的时候也会有这样的报错。

Couldn’t find compile command from ‘compile_commands.json’ in *****

我的compile_commands.json是cmake生成的。我试了一下自己手动在compile_commands.json里添加头文件信息,比如这样

{
  "directory": "/home/jack/gitroot/gdy/server/proto",
  "command": "",
  "file": "/home/jack/gitroot/gdy/server/proto/db.pb-c.h"
},

那么我打开这个头文件就不会在报错了。 但是这个头文件依然不能够在#include "后面进行补全

linux下一直没有问题的。。

Mac下的同样的方法是没有效果的。。依然不提示

我做了一个测试,CMakeFiles的内容是这样的

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

project(testproj)

add_executable (test test.cpp)

TARGET_INCLUDE_DIRECTORIES( test PRIVATE “${PROJECT_SOURCE_DIR}/” )

生成的compile_commands.json是这样的

[

{ “directory”: “/home/jack/source/test”,

“command”: “/usr/bin/c++ -I/home/jack/source/test -o CMakeFiles/test.dir/test.cpp.o -c /home/jack/source/test/test.cpp”,

“file”: “/home/jack/source/test/test.cpp” }

]

但是在打开test.h的时候,依然提示

Couldn’t find compile command from ‘compile_commands.json’ in /home/jack/source/test/.

补全头文件的时候也同样不会出现test.h

顶一下 还在等待解决

还没有解决 已经提issue

1 个赞

我尝试了下cquery 目前体验 头文件补全正常 string vector也无报错

我昨天也下载了cquery 还没编译。。晚上回去再搞一下:joy: