IDE 配置 - C/C++

背景

linux下并没有 Visual Studio 这种巨无霸
而老一辈的程序员又各种推崇 Vim 这种上古的工具(虽然也不是不能用)
导致linux下搜索 C/C++的开发环境, 几乎都是 vim + ctags 这种组合, 其中比较有名的应该是在知乎下的如何在 Linux 下利用 Vim 搭建 C/C++ 开发环境?韦易笑 的答案.

但, 太折腾了. 各种配置参数, 各种不明觉厉的配置和插件, 以及莫名其妙的不兼容.

因此, 整一个适合自己的, 容易复刻的C/C++ IDE环境, 还是有必要的.

目标

平常很少写 c/c++, 多是在看一些库的代码和实现, 因此方便阅读是主要目的.
而巨硬出的插件在linux下cpu拉满, 体验太不好.

安装

经过一些搜索, 发现了 宝藏文 2022 年 vim 的 C/C++ 配置, 虽然也是 vim的配置, 但是给了很大的启发.

安装完软件, 在打开具体项目时还需要进行一些设置.

说明: 核心是生成一个ccls能识别的compile_commands.json文件, 文件说明可见 JSON Compilation Database Format Specification

示例

示例1 - linux-kernel

  1. 拉取代码

    • 可以使用国内镜像
    git clone git@github.com:torvalds/linux.git
    
  2. 使用v5.4版本

    • 5.0以上的就行, 主要是偷懒
    cd linux
    git checkout v5.4
    
  3. 构建项目

    • 毕竟有一些宏是不是生效, 环境变量是怎样的, 只有构建了才知道
    • 这里编译器用了clang, 也可以用gcc
    make CC=clang defconfig
    make CC=clang -j $(nproc)
    
  4. 生成 compile_commands.json

    ./scripts/gen_compile_commands.py #5系列的版本有脚本gen_compile_commands.py 不然就用bear自己生成
    
  5. 用 vscode 打开项目, 等待一小会的加载, 即可享受丝滑体验 linux1 linux2

示例2 -- levledb

  1. 拉取代码

    git clone git@github.com:google/leveldb.git
    
  2. 构建

    cd leveldb
    git submodule init
    git submodule update
    cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=on .
    cmake --build .
    
  3. 如果使用 VSCode, 在项目下添加如下配置

    {
        "cmake.configureArgs": [
            "-DDCMAKE_EXPORT_COMPILE_COMMANDS=ON"
        ],
    }
    
  4. 这样会在项目的 build 目录中生成 compile_commands.json

    • 需要修改 ccls 插件配置, 让它找到这个文件
    {
        "ccls.misc.compilationDatabaseDirectory": "build"
    }
    

示例3 -- postgres

  1. 拉取代码

    git clone git@github.com:postgres/postgres.git
    
  2. 构建

    cd postgres
    ./configure
    bear -- make -j `nproc`
    
  3. 这样使用 Bear生成了compile_commands.json