Herramienta para generar el archivo de base de datos de compilación JSON de Clang para sistemas de compilación make en GNU.
Está dirigido principalmente a las grandes bases de código de la base de datos de compilación no de CMAKE (CMake ya genera. Inspirado en proyectos como YCM-Generator y Bear, pero más rápido (principalmente con grandes proyectos), ya que en la mayoría de los casos no necesita una compilación limpia (como lo hacen las herramientas mencionadas) para generar el archivo de la base de datos de compilación, para lograr esto, utiliza las opciones de fabricación como -n / --dry-run y -k / --keep-going para extraer los comandos de compilación. Además, es más amigable que la compilación cruzada que el enfoque de toolinas falsas de YCM-Generator.
# pip install compiledb
sh-completion/compiledb.bash a su archivo .bashrc , por ejemplo. compiledb proporciona un script de envoltura Python make que, además de ejecutar el comando Make Build, actualiza el archivo de base de datos de compilación JSON correspondiente a esa compilación, lo que resulta en una interfaz de línea de comandos similar a Bear.
Para generar el archivo compile_commands.json utilizando el script "Make Wrapper" de CompiledB, ejecutando el objetivo de Makefile all :
$ compiledb make compiledb reenvía todas las opciones/argumentos aprobados después de make subcomando a GNU Make, por lo que uno puede, por ejemplo, generar compile_commands.json usando core/main.mk como Main Makefile ( -f Flag), comenzando la compilación desde el directorio build ( -C Flag):
$ compiledb make -f core/main.mk -C build De manera predeterminada, compiledb make genera la base de datos de compilación y ejecuta el comando de compilación real solicitado (actuando como un envoltorio de fabricación), el paso de compilación se puede omitir utilizando las opciones -n o --no-build .
$ compiledb -n make El comando base compiledb se ha diseñado para que pueda usarse para analizar los comandos de compilación de archivos de texto arbitrarios (o stdin), suponiendo que tenga un registro de compilación (idealmente generado usando el comando make -Bnwk ), y genera la base de datos de compilación JSON correspondiente.
Por ejemplo, para generar la base de datos de compilación desde el archivo build-log.txt , use el siguiente comando.
$ compiledb --parse build-log.txto su equivalente:
$ compiledb < build-log.txtO incluso, para la salida de Pipe Make e imprima la base de datos de compilación a la salida estándar:
$ make -Bnwk | compiledb -o- Por defecto, compiledb genera una base de datos de compilación JSON en el formato de lista "Argumentos". El formato de cadena "Comando" también se admite mediante el uso de la bandera --command-style :
$ compiledb --command-style make He implementado esta herramienta porque necesitaba indexar algunos módulos de AOSP para navegar y estudiar fines (después de no tener resultados satisfactorios con las herramientas actuales disponibles para el momento, como YCM-Generator y Bear). Así que he reelaborado YCM-Generator, que resultó en la versión inicial de CompiledB/Parser.py y he usado con éxito para generar compile_commands.json para algunos módulos AOSP en ~ 1min ejecutándose en un contenedor Docker y luego podría usarlo con algunas herramientas excelentes, como:
Aviso:
Los parches siempre son bienvenidos :)
GNU GPLV3