文章目录

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