ccls是符合微软 LSP标准 的C/C++ language server。
ccls能够提供更好的跳转定义/引用、代码补全、符号搜索和重命名等功能。
参见 : https://github.com/MaskRay/ccls
# 下载ccls代码
git clone --depth=1 --recursive https://github.com/MaskRay/ccls
gcc 可以升级到搞版本 10.3,或更高
cmake 由 3.5.1 升级到 3.19.2,或更高。
# 参考知乎内容:https://zhuanlan.zhihu.com/p/84876003
# 下载ccls源码
git clone https://github.com/MaskRay/ccls
cd ccls
# 在ccls根目录下执行
# 第0步,下载第三方依赖(主要是rapidjson)
git submodule update --init --recursive
# 第一步,下载llvm的二进制包
# 这一步可以用任何下载工具代替,只要使用的是这个网址的结果即可
wget -c http://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
# 解压二进制包
tar xf clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
# 在当前文件目录下执行cmake 执行结果保存到Release文件夹中
cmake -H. -BRelease -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PWD/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04
cmake --build Release
# 开始编译并安装
cd Release
# 这里使用4线程编译,当然如果你的电脑够强的话,可以直接-j或者使用更搞核数加快编译
make -j4
# 编译完成,安装
make install
# 默认安装到 /usr/local/bin/ccls
安装 vscode的 ccls 插件后,即可使用 ccls 插件查看代码。
# 生成 项目文件列表,在 out/DebugX64 目录下(即build.ninja目录)运行:
ninja -t compdb cc cxx > compile_commands.json
参考:https://github.com/MaskRay/ccls/wiki/Visual-Studio-Code
在vscode 的 settings.json 中设置
{
"C_Cpp.workspaceParsingPriority": "medium",
"C_Cpp.intelliSenseEngine": "Disabled",
// 一下cpp配置是为了ccls和cpp插件混用
"C_Cpp.loggingLevel": "Debug",
"C_Cpp.workspaceSymbols": "All",
"C_Cpp.autocomplete": "Disabled",
"C_Cpp.formatting": "Disabled",
"C_Cpp.errorSquiggles": "Disabled",
// docker中的 ccls 安装路径
"ccls.launch.command": "/usr/local/bin/ccls",
// ninja 生成的 compile_commands.json 工程文件配置文件(compile_commands.json)路径
"ccls.misc.compilationDatabaseDirectory": "${workspaceFolder}/out/DebugX64",
// 生成的缓存文件保存位置
"ccls.cache.directory": "${workspaceFolder}/.ccls-cache/",
"files.associations": {
"*.ipp": "cpp"
}
}