628 Stimmen

Suche nach einem 'cmake clean'-Befehl zum Aufräumen der CMake-Ausgabe

Genauso wie make clean alle Dateien löscht, die ein Makefile erzeugt hat, würde ich gerne dasselbe mit CMake tun. Allzu oft ertappe ich mich dabei, wie ich manuell durch Verzeichnisse gehe und Dateien wie cmake_install.cmake y CMakeCache.txt und die CMakeFiles Mappen.

Gibt es einen Befehl wie cmake clean um all diese Dateien automatisch zu entfernen? Idealerweise sollte dies der rekursiven Struktur folgen, die im aktuellen Verzeichnis in der CMakeLists.txt Datei.

39voto

user1480788 Punkte 494

Einfach ausstellen rm CMakeCache.txt funktioniert auch bei mir.

29voto

SkryptX Punkte 653

Beginnend mit CMake 3.24 gibt es die --fresh Befehlszeilenoption, die den gesamten Build-Baum jedes Mal neu erstellt:

--fresh

Neu in Version 3.24.

Führen Sie eine neue Konfiguration des Build-Baums durch. Dies entfernt alle Datei CMakeCache.txt und das zugehörige Verzeichnis CMakeFiles/ entfernt und und erstellt sie von Grund auf neu.

https://cmake.org/cmake/help/latest/manual/cmake.1.html#options

19voto

redleg Punkte 281

Vielleicht ist es ein wenig veraltet, aber da dies der erste Treffer ist, wenn man googelt cmake clean füge ich dies hinzu:

Da Sie einen Build im Build-Verzeichnis mit einem bestimmten Ziel starten können mit

cmake --build . --target xyz

können Sie natürlich auch

cmake --build . --target clean

zur Ausführung der clean Ziel in den generierten Build-Dateien.

9voto

tschutter Punkte 107

Ich stimme zu, dass das Out-of-Source-Build die beste Lösung ist. Aber für die Zeiten, in denen man einfach einen In-Source-Build machen muss, habe ich ein Python-Skript geschrieben, das verfügbar ist aquí die:

  1. Läuft "sauber machen"
  2. Entfernt bestimmte von CMake erzeugte Dateien im obersten Verzeichnis, wie z.B. CMakeCache.txt
  3. Für jedes Unterverzeichnis, das ein CMakeFiles-Verzeichnis enthält, werden CMakeFiles, Makefile und cmake_install.cmake entfernt.
  4. Entfernt alle leeren Unterverzeichnisse.

8voto

frank Punkte 130

Es ist lustig zu sehen, diese Frage bekommt so viele Aufmerksamkeit und komplizierte Lösungen, die in der Tat zeigt ein Schmerz, nicht eine saubere Methode mit cmake haben.

Nun, Sie können definitiv cd build_work um Ihre Arbeit zu erledigen, dann machen Sie eine rm -rf * wenn Sie reinigen müssen. Wie auch immer, rm -rf * ist ein gefährlicher Befehl, denn viele Menschen sind sich oft nicht bewusst, in welchem Du sie sich befinden.

Wenn Sie cd .. , rm -rf build_work und dann mkdir build_work und dann cd build_work das ist einfach zu viel Tipparbeit.

Eine gute Lösung ist also, sich einfach aus dem Build-Ordner herauszuhalten und cmake den Pfad mitzuteilen:
zu konfigurieren: cmake -B build_work
zu bauen: cmake --build build_work
zu installieren: cmake --install build_work
zu reinigen: rm -rf build_work
um den Bauordner neu zu erstellen: Sie brauchen nicht einmal mkdir build_work konfigurieren Sie es einfach mit cmake -B build_work .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X