Compilation Database

简单来说,Compilation Database就是编译整个项目所需要的编译信息集合,包括文件名、要传递给编译器的所有标志、其他参数以及调用编译器的目录(这会影响相对路径)。
Compilation Database通常被序列化为JSON文件,发展自Clang的工具世界。
现在它已成为不同工具之间互操作的重要机制。工具需要的是知道应该如何去编译,而不是编译这个动作本身。
Compilation DatabaseJSON文件可以由越来越多的构建系统和其他工具生成。

JSON文件生成

CMakeLists项目

使用cmake提供的参数CMAKE_EXPORT_COMPILE_COMMANDS

Makefile项目

需要安装一个可以从Makefile生成Compilation DatabaseJSON文件的工具。
推荐使用python编写的工具compiledb

安装compiledb

下面这个命令有可能需要sudo权限:

1
$ pip install compiledb

然后查看使用方式:

1
$ compiledb -h

例如,在项目根目录下,生成JSON文件,但不编译项目:

1
$ compiledb -n make