Tool zum Generieren von Clangs JSON -Kompilierungsdatenbankdatei für GNU make Build -Systeme.
Es richtet sich hauptsächlich auf Nicht-CMake-Codebasen (CMake generiert bereits eine Kompilierungsdatenbank). Inspiriert von Projekten wie YCM-Generator und Bear, aber schneller (hauptsächlich bei großen Projekten), da in den meisten Fällen kein sauberer Build (wie die genannten Tools) erforderlich sind , um die Kompilierungsdatenbankdatei zu generieren, wird dies erreicht, um die Optionen wie -n / --dry-run und -k / --keep-going um die Kompilienbefehle zu extrahieren. Außerdem ist es mit dem fälschlichen Toolchanin-Ansatz des YCM-Generators mit dem Cross-Compiling-freundlicher als YCM-Generator.
# pip install compiledb
sh-completion/compiledb.bash Datei beispielsweise den Inhalt der SH-Completion/ .bashrc Datei hinzu. compiledb bietet ein Skript make Python-Wrapper, das außerdem den Befehl erstellen erstellen, die json-Kompilierungsdatenbankdatei, die diesem Build entspricht, aktualisiert, was zu einer ähnlichen Befehlszeilenschnittstelle wie dem Bären führt.
So generieren Sie die Datei compile_commands.json mit CompiledBs "Make Wrapper" -Skript, wobei Makefile -Ziel all ausgeführt werden:
$ compiledb make compiledb leitet alle Optionen/Argumente weiter, die nach make Unterbefehl in GNU Made übergeben wurden, sodass man beispielsweise compile_commands.json mit core/main.mk als Haupt -Makefile ( -f -Flag) generieren kann, starten Sie das Build vom build -Verzeichnis ( -C -Flagge):
$ compiledb make -f core/main.mk -C build Standardmäßig generiert compiledb make die Kompilierungsdatenbank und führt den angeforderten Befehl der tatsächlichen Build aus (als Make -Wrapper fungiert). Der Build -Schritt kann mit den Optionen -n oder --no-build -Optionen übersprungen werden.
$ compiledb -n make Der Befehl compiledb -Basis wurde so konzipiert, dass er zum Analysieren von Kompilierungsbefehlen aus beliebigen Textdateien (oder STDIN) verwendet werden kann. Angenommen, es verfügt über ein Build -Protokoll (idealerweise generiert mit make -Bnwk -Befehl) und generiert die entsprechende JSON -Kompilierungsdatenbank.
Verwenden Sie beispielsweise den folgenden Befehl, um die Kompilierungsdatenbank aus build-log.txt -Datei zu generieren.
$ compiledb --parse build-log.txtoder sein gleichwertig:
$ compiledb < build-log.txtOder sogar die Ausgabe von Pipe Make und drucken Sie die Kompilierungsdatenbank in die Standardausgabe:
$ make -Bnwk | compiledb -o- Standardmäßig erzeugt compiledb im List -Format "Argumente" eine JSON -Kompilierungsdatenbank. Das String-Format "Befehl" wird ebenfalls durch die Verwendung des Flaggenbilds --command-style unterstützt:
$ compiledb --command-style make Ich habe dieses Tool implementiert, weil ich einige AOSP-Module zum Navigieren und Studieren von Zwecken indexieren musste (nachdem ich keine zufriedenstellenden Ergebnisse mit aktuellen Tools wie YCM-Generator und Bären erzielte). Deshalb habe ich YCM-Generator überarbeitet, was zur ersten Version von CompiledB/Parser.py geführt und erfolgreich verwendet wurde, um compile_commands.json für einige AOSP-Module in ~ 1 Minute in einem Docker-Container zu generieren und kann es dann mit einigen großartigen Tools verwenden, wie z. B.:
Beachten:
Patches sind immer willkommen :)
GNU GPLV3