C/C++工程生成编译数据库文件compile_commands.json

文章目录

    • 1. 目的
    • 2. 适用于 CMake 的方法
      • 方法1:在工程根目录的 CMakeLists.txt 中开头处增加
      • 方法2:调用 cmake 时, 传入参数
      • 方法3:定义环境变量
    • 3. 适用于 Makefile 的方法

C/C++工程生成编译数据库文件compile_commands.json_第1张图片

1. 目的

Clang 系列的工具(例如 LSP 服务端 clangd)需要读取编译数据库文件 compile_commands.json, 里面以 json 格式给出了具体的编译的命令, 包括编译器路径、文件、编译选项、宏定义等。每个被编译的 .c 和 .cpp 文件分别对应一条完整的编译命令。Clang 系列工具根据这个命令, 可以给出准确的代码补全。

2. 适用于 CMake 的方法

方法1:在工程根目录的 CMakeLists.txt 中开头处增加

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

方法2:调用 cmake 时, 传入参数

-DCMAKE_EXPORT_COMPILE_COMMANDS=ON 参数

方法3:定义环境变量

在当前 shell 中输入, 或直接编辑 ~/.bashrc

export CMAKE_EXPORT_COMPILE_COMMANDS=1

3. 适用于 Makefile 的方法

需要安装 bear 这一工具

sudo apt install bear

在工程目录下,原本的 make 命令前, 增加 bear --, 就可以生成 compile_commands.json 了:

bear -- make

你可能感兴趣的:(C/C++,json,c++,linux,cmake)