Skip to main content

为基于 make 的构建系统生成 Clang JSON 编译数据库文件的工具。

项目描述

编译数据库生成器

CircleCI 分支 派皮 PyPI - Python 版本 GitHub

为基于 GNU 的构建系统生成Clang 的 JSON 编译数据库文件 的工具。make

它主要针对非 cmake(cmake 已经生成编译数据库)的大型代码库。受YCM-GeneratorBear等项目的启发,但速度更快(主要用于大型项目),因为在大多数情况下,它不需要干净的构建(如上述工具所做的那样)来生成编译数据库文件,它使用诸如-n/--dry-run-k/之类的 make 选项--keep-going 以提取编译命令。此外,它比 YCM-generator 的 fake-toolchanin 方法更易于交叉编译。

安装

# pip install compiledb
  • 支持 Python 2.x 和 3.x(目前,仅使用 2.7 和 3.6 版本进行测试)
  • 例如,对于 bash 补全支持,将文件的内容添加sh-completion/compiledb.bash到您的.bashrc文件中。
  • ZSH 即将完成 :)

用法

compiledb提供了一个makepython 包装脚本,除了执行 make build 命令之外,它还会更新与该 build 对应的 JSON 编译数据库文件,从而产生类似于Bear的命令行界面。

使用compiledb的“make wrapper”脚本生成compile_commands.json文件,执行Makefile target all

$ compiledb make

compiledb将子命令之后传递的所有选项/参数转发make给 GNU Make,例如,可以compile_commands.json使用core/main.mk as main makefile ( -fflag) 生成,从build目录 ( -Cflag) 开始构建:

$ compiledb make -f core/main.mk -C build

默认情况下,compiledb make生成编译数据库并运行请求的实际构建命令(充当 make 包装器),可以使用-n or--no-build选项跳过构建步骤。

$ compiledb -n make

compiledbbase 命令被设计成可以用来解析来自任意文本文件(或标准输入)的编译命令,假设它有一个构建日志(最好使用 make -Bnwk命令生成),并生成相应的 JSON 编译数据库。

例如,要从build-log.txt文件生成编译数据库,请使用以下命令。

$ compiledb --parse build-log.txt

或其等价物:

$ compiledb < build-log.txt

甚至,管道 make 的输出并将编译数据库打印到标准输出:

$ make -Bnwk | compiledb -o-

默认情况下compiledb会生成“参数”列表 格式的 JSON 编译数据库。--command-style通过使用标志也支持“命令”字符串格式:

$ compiledb --command-style make

测试/贡献

我已经实现了这个工具,因为我需要索引一些AOSP的模块以用于导航和学习目的(在使用当前可用的工具(例如YCM-GeneratorBear )没有令人满意的结果之后)。所以我重新设计了 YCM-Generator,它产生了compiledb/parser.py的初始版本,并成功地在 1 分钟内在Docker容器中运行生成 compile_commands.json了一些 AOSP 模块,然后可以将它与一些很棒的工具一起使用,例如:

注意:

  • Windows:使用 cmd、wsl(Ubuntu)、mingw32 在 Windows 10 上测试
  • Linux:目前仅在 Arch Linux 和 Ubuntu 18 上测试过
  • Mac:在 macOS 10.13 和 10.14 上测试

补丁总是受欢迎的:)

执照

GNU GPLv3

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

已编译b-0.10.1.tar.gz (13.6 kB 查看哈希

已上传 source

内置发行版

已编译b-0.10.1-py3-none-any.whl (27.2 kB 查看哈希

已上传 py3

已编译b-0.10.1-py2-none-any.whl (27.2 kB 查看哈希

已上传 py2