Wie Sie das tool verwenden, gehören-was-Sie-zusammen mit CMake zu erkennen, ungenutzte Header?
Werkzeug include-what-you-use
kann verwendet werden, um zu erkennen, unnötige Header. Ich bin mit CMake für meine C++ - software-Projekt. Wie kann ich anweisen, CMake ausgeführt werden, gehören-was-Sie-verwenden Sie automatisch auf die source-Dateien meiner software-Projekt?
- Hast du die Frage halt so könnten Sie Sie beantworten?
- Ich brauchte zu verwenden sind-was-du-in meinen CMake-Projekt. Als ich herausfand, dass dieser Weg, es zu tun, ich dachte, es war eine gute Idee, um es zu dokumentieren, wie eine stackoverflow-Frage für die anderen. Selbst-Antworten sind aufgefordert, gemäß der Dokumentation
- Es gibt sogar eine "Antwort auf Ihre eigene Frage" Kontrollkästchen, wenn Sie eine Frage stellen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
CMake 3.3 Einführung der neuen target-Eigenschaft CXX_INCLUDE_WHAT_YOU_USE, die festgelegt werden können, um den Pfad des Programms
include-what-you-use
. Zum Beispiel diese CMakeLists.txtist in der Lage, zum erstellen der Datei main.cc
und in der gleichen Zeit, haben
include-what-you-use
geben eine Warnung, dassdie mitgelieferten header Vektor ist nicht erforderlich.
Wenn Sie möchten, übergeben von benutzerdefinierten Optionen, um
include-what-you-use
, wie zum Beispiel--mapping_file
können Sie es überWenn Sie nicht haben Zugang zu CMake 3.3,
include-what-you-use
kommt mit einem python-tool namens iwyu_tool.py, die können tun, was Sie wollen.Es funktioniert durch die Analyse Geräusch Zusammenstellung-Datenbank, die schnell produziert werden, mit CMake.
Läuft das tool manuell
Vorausgesetzt, Sie haben bereits eine CMake dir für Ihr Projekt, müssen Sie zunächst sagen, CMake zu produzieren, die Zusammenstellung-Datenbank:
Dieser erzeugt eine Datei,
compile_commands.json
mit compiler-Aufrufe für jedes Objekt eine Datei in Ihrem Projekt. Sie nicht brauchen, um das Projekt neu erstellen.Nun können Sie
include-what-you-use
auf Ihr Projekt durch ausführen des python-Werkzeug, auf das build-Verzeichnis:Hinzufügen einer benutzerdefinierten Ziel-zu Ihrem cmake-Projekt
Folgende Ausschnitt kann verwendet werden, um einen
iwyu
Ziel ein cmake-Projekt.Hinweise
Den
include-what-you-use
binäre werden muss, die in Ihrem Pfad für jede der oben genannten arbeiten ordnungsgemäß.include-what-you-use-0.7.src.tar.gz
heruntergeladen von http://include-what-you-use.org/downloads/?iwyu_tool.py
offenbar noch immer gibt, obwohl es tief geschachtelt ist in der directory-Struktur. Alternativ laden Sie einfach das Skript aus der github-Seite.iwyu_tool
und nichtiwyu-tool
. Möchten Sie vielleicht korrigieren Sie Ihre Antwort oder andere, die vielleicht in einer ähnlichen situation wie ich Tat, als suchte ich für das letztere und konnte nicht finden, dass das Werkzeug überall.find_program()
nimmt dieNAMES
,HINTS
, undPATHS
Argumente, die ich gefunden habe, hilfreich für die, die sich anmutig zur Verarbeitung von unix - -y-und Windows-Umgebungen.Können Sie auch ermöglichen es weltweit außerhalb der cmake-Skript, indem die cmake-variable:
Wird es dann nennen Sie es auf jeden CXX Ziel.
Erweiterte ich den source code von Alastair Harrison, um zu erstellen Sie eine wiederverwendbare Lösung. Ich habe, kam mit die folgenden arbeiten sollten mit alle CMake Versionen:
Datei
iwyu.cmake
:Datei
CMakeLists.txt
:Aufrufen CMake wie folgt ausgeführt gehören-was-Sie-verwenden, wenn die
all
Ziel ist aufgerufen:Sollte die Ausgabe wie folgt:
Bearbeiten 2015-08-19: Der Ansatz mit der CMake Eigenschaft
<LANG>_INCLUDE_WHAT_YOU_USE
hat nicht funktioniert für mich mit CMake version 3.3.1. Deshalb habe ich aktualisiert, die Lösung.Bearbeiten 2015-09-30: Die Ausgabe falsch war, da mein gehören-was-Sie-verwenden installation defekt war. Die
include-what-you-use
undiwyu_tool.py
Dateien werden im gleichen Verzeichnis wieclang
,clang++
usw.