Outil de génération du fichier de base de données de compilation JSON de Clang pour les systèmes de construction make sur GNU.
Il s'adresse principalement à des grandes bases de code non-Cmake (CMake génère déjà la base de données de compilation). Inspiré par des projets comme YCM-Generator et Bear, mais plus rapidement (principalement avec de grands projets), car dans la plupart des cas, il n'a pas besoin d'une version propre (comme le font les outils mentionnés) pour générer le fichier de base de données de compilation, pour y parvenir, il utilise les options de fabrication telles que -n / - --dry-run et -k / --keep-going pour extraire les commandes de compilation. En outre, il est plus convivial en compilation croisée que l'approche du faux-tabouret du Générateur YCM.
# pip install compiledb
sh-completion/compiledb.bash à votre fichier .bashrc , par exemple. compiledb fournit un script de wrapper make Python qui, en plus d'exécuter la commande de création de création, met à jour le fichier de base de données de compilation JSON correspondant à cette version, résultant en une interface de ligne de commande similaire à Bear.
Pour générer le fichier compile_commands.json à l'aide du script "Make Wrapper" all Compile
$ compiledb make compiledb transfère toutes les options / arguments passés après make de sous-commande à GNU Make, donc on peut, par exemple, générer compile_commands.json en utilisant core/main.mk comme principal makefile ( -f drapeau), en démarrant le répertoire de build ( -C drapeau):
$ compiledb make -f core/main.mk -C build Par défaut, compiledb make génère la base de données de compilation et exécute la commande de construction réelle demandée (agissant comme un wrapper), l'étape de construction peut être ignorée à l'aide des options -n ou --no-build .
$ compiledb -n make La commande de base compiledb a été conçue de sorte qu'elle peut être utilisée pour analyser les commandes de compilation à partir de fichiers texte arbitraires (ou stdin), en supposant qu'il a un journal de construction (idéalement généré à l'aide de la commande make -Bnwk ) et génère la base de données de compilation JSON correspondante.
Par exemple, pour générer la base de données de compilation à partir du fichier build-log.txt , utilisez la commande suivante.
$ compiledb --parse build-log.txtou son équivalent:
$ compiledb < build-log.txtOu même, pour tuer la sortie et imprimer la base de données de compilation à la sortie standard:
$ make -Bnwk | compiledb -o- Par défaut, compiledb génère une base de données de compilation JSON dans le format de liste "Arguments". Le format de chaîne "Command" est également pris en charge grâce à l'utilisation du drapeau --command-style :
$ compiledb --command-style make J'ai implémenté cet outil car je devais indexer certains modules d'AOSP pour naviguer et étudier (après avoir eu aucun résultat de satisfaction avec les outils actuels disponibles au moment tel que YCM-Generator et Bear). J'ai donc retravaillé YCM-Generator, qui a abouti à la version initiale de CompiledB / Parser.py et utilisé avec succès pour générer compile_commands.json pour certains modules AOSP en ~ 1min fonctionnant dans un conteneur docker et je pourrais ensuite l'utiliser avec de grands outils, tels que:
Avis:
Les correctifs sont toujours les bienvenus :)
GNU GPLV3