用于为基于make的构建系统生成clang json编译数据库文件的工具。
compiledb的Python项目详细描述
编译数据库生成器
为gnu生成Clang's JSON Compilation Database文件的工具
^基于{
主要针对非cmake(cmake已经生成编译数据库)
大型代码库。受YCM-Generator和Bear等项目启发,
但是速度更快(主要是大型项目),因为在大多数情况下,不需要清除
构建(如上述工具所做)以生成编译数据库文件
为此,它使用make选项,如-n
/--dry-run
和-k
/--keep-going
。
提取编译命令。而且,它比交叉编译友好
ycm生成器的假toolchanin方法。
安装
# pip install compiledb
- 支持Python2.x和3.x(目前只测试2.7和3.6版本)
- 对于bash完成支持,添加
sh-completion/compiledb.bash
文件的内容 例如,.bashrc
文件。 - zsh即将完成:)
用法
compiledb
提供了一个make
python包装脚本,除了执行make
build命令,更新与该生成对应的json编译数据库文件,
生成类似于Bear的命令行接口。
要使用compiledb的“make wrapper”脚本生成compile_commands.json
文件,
执行makefile目标all
:
$ compiledb make
compiledb
将在make
子命令之后传递的所有选项/参数转发给gnu make,
例如,可以使用core/main.mk
生成compile_commands.json
作为主生成文件(-f
标志),从build
目录(-C
标志)启动生成:
$ compiledb make -f core/main.mk -C build
默认情况下,compiledb make
生成编译数据库并运行实际生成
命令请求(作为make包装器),可以使用-n
跳过生成步骤。
或--no-build
选项。
$ compiledb -n make
compiledb
基本命令的设计使其可以用于分析编译命令
从任意文本文件(或stdin),假设它有一个构建日志(理想情况下使用
make -Bnwk
命令),并生成相应的json编译数据库。
例如,要从build-log.txt
文件生成编译数据库,请使用以下命令
命令。
$ compiledb --parse build-log.txt
或其等价物:
$ compiledb < build-log.txt
甚至,将make的输出管道化,并将编译数据库打印到标准输出:
$ make -Bnwk | compiledb -o-
默认情况下,compiledb
在“参数”列表中生成一个json编译数据库
format。“命令”字符串
通过使用--command-style
标志也支持格式:
$ compiledb --command-style make
测试/贡献
我实现这个工具是因为我需要为一些AOSP模块编制索引,以便导航
以及学习目的(在使用现有工具没有令人满意的结果后
时间,例如YCM-Generator和Bear)。所以我重新设计了ycm生成器
在compiledb/parser.py的初始版本中,并成功用于生成
compile_commands.json
对于在Docker容器中运行约1分钟的某些aosp模块,然后
可以与一些很棒的工具一起使用,例如:
注意:
- windows:使用cmd、wsl(ubuntu)、mingw32在windows 10上测试
- linux:到目前为止,只在arch linux和ubuntu 18上测试过
- mac:在macos 10.13和10.14上测试
- linux:到目前为止,只在arch linux和ubuntu 18上测试过
欢迎使用修补程序:)
许可证
GNU GPLv3