当前位置: 首页 > 工具软件 > ccls > 使用案例 >

工具02 ubuntu上适用 ccls,查看chromium代码

韩智明
2023-12-01

01 基本资料

ccls是符合微软 LSP标准 的C/C++ language server。
ccls能够提供更好的跳转定义/引用、代码补全、符号搜索和重命名等功能。

参见 : https://github.com/MaskRay/ccls

02 下载 ccls 源码

# 下载ccls代码
git clone --depth=1 --recursive https://github.com/MaskRay/ccls

02 编译安装依赖

02.02 更新依赖

gcc 可以升级到搞版本 10.3,或更高
cmake 由 3.5.1 升级到 3.19.2,或更高。

02.02 编译安装 ccls

# 参考知乎内容: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

03 配置 ccls

03.01 安装 vscode 的 ccls 插件

安装 vscode的 ccls 插件后,即可使用 ccls 插件查看代码。

03.02 生成 ccls 需要的项目文件

# 生成 项目文件列表,在 out/DebugX64 目录下(即build.ninja目录)运行:
ninja -t compdb cc cxx > compile_commands.json

03.03 配置 vscode 的 ccls 选项

参考: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"
    }
}
 类似资料: