为基于 make 的构建系统生成 Clang JSON 编译数据库文件的工具。
项目描述
编译数据库生成器
为基于 GNU 的构建系统生成Clang 的 JSON 编译数据库文件
的工具。make
它主要针对非 cmake(cmake 已经生成编译数据库)的大型代码库。受YCM-Generator和Bear等项目的启发,但速度更快(主要用于大型项目),因为在大多数情况下,它不需要干净的构建(如上述工具所做的那样)来生成编译数据库文件,它使用诸如-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-Generator和Bear )没有令人满意的结果之后)。所以我重新设计了 YCM-Generator,它产生了compiledb/parser.py的初始版本,并成功地在 1 分钟内在Docker容器中运行生成
compile_commands.json了一些 AOSP 模块,然后可以将它与一些很棒的工具一起使用,例如:
- Vim + YouCompleteMe + rtags + chromatica.nvim
- Neovim + LanguageClient-neovim + cquery + deoplete
- Neovim + ALE + ccls
注意:
- Windows:使用 cmd、wsl(Ubuntu)、mingw32 在 Windows 10 上测试
- Linux:目前仅在 Arch Linux 和 Ubuntu 18 上测试过
- Mac:在 macOS 10.13 和 10.14 上测试
补丁总是受欢迎的:)
执照
GNU GPLv3
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。