Ferramenta para gerar arquivo de banco de dados de compilação JSON de Clang para sistemas de construção baseados em make GNU.
É destinado principalmente a não-CMAKE (CMake já gera bases de código grandes de compilação). Inspirado em projetos como YCM-Generator e Bear, mas mais rápido (principalmente com grandes projetos), pois, na maioria dos casos, ele não precisa de uma construção limpa (como as ferramentas mencionadas) para gerar o arquivo de banco de dados de compilação, para conseguir isso, usa as opções de maquiagem, como -n / --dry-run e -k / --keep-going para extrair os comandos de comutação. Além disso, é mais amigável de compilações cruzadas do que a abordagem de Fake-Tolchanin do YCM-Generator.
# pip install compiledb
sh-completion/compiledb.bash ao seu arquivo .bashrc , por exemplo. compiledb fornece um script de Wrapper make Python que, além de executar o comando Make Build, atualiza o arquivo de banco de dados de compilação JSON correspondente a essa compilação, resultando em uma interface de linha de comando semelhante à Bear.
Para gerar o arquivo compile_commands.json usando o script "Make Wrapper" do Compilyb, executando o Makefile Target all :
$ compiledb make compiledb compile_commands.json todas core/main.mk opções -f argumentos -C após make subcomando para build gnu
$ compiledb make -f core/main.mk -C build Por padrão, compiledb make gera o banco de dados de compilação e executa o comando de compilação real solicitado (atuando como um invólucro), a etapa de construção pode ser ignorada usando as opções -n ou --no-build .
$ compiledb -n make O comando compiledb Base foi projetado para que possa ser usado para analisar comandos de compilação de arquivos de texto arbitrários (ou stdin), assumindo que ele possui um log de compilação (gerado idealmente usando o comando make -Bnwk ) e gera o banco de dados de compilação JSON correspondente.
Por exemplo, para gerar o banco de dados de compilação no arquivo build-log.txt , use o seguinte comando.
$ compiledb --parse build-log.txtou seu equivalente:
$ compiledb < build-log.txtOu até, para a saída do Pipe Make e imprima o banco de dados de compilação na saída padrão:
$ make -Bnwk | compiledb -o- Por padrão, compiledb gera um banco de dados de compilação JSON no formato da lista "Argumentos". O formato da string "Command" também é suportado através do uso da bandeira --command-style :
$ compiledb --command-style make Eu implementei essa ferramenta porque precisava indexar alguns módulos de alguns AOSP para navegar e estudar fins (depois de não ter resultados satisfatórios com as ferramentas atuais disponíveis no momento como YCM-Generator e Bear). Então, eu reformulei o YCM-Generator, que resultou na versão inicial do Compiledb/parser.py e usado com sucesso para gerar compile_commands.json para alguns módulos AOSP em ~ 1min em execução em um contêiner do docker e, em seguida, poderia usá-lo com algumas ótimas ferramentas, como:
Perceber:
Patches são sempre bem -vindos :)
GNU GPLV3