Wann CMake clean / configure verwenden? bearbeiten
CMake speichert mehrere Informationen in der Datei CMakeCache.txt
. Dies sind z. B. Verzeichnisse, in denen bestimmte Pakete gefunden und Definitionen mit -D
übergeben wurden.
Ein paar Beispiele, wenn Sie --cmake-clean-cache
verwenden möchten:
- Ein zuvor gefundenes Paket sollte erneut gesucht werden, da es an einem anderen Ort gefunden / verwendet werden soll
- Sie haben eine Definition übergeben, vor der Sie nicht mehr gesetzt werden möchten, wenn Sie vorwärts gehen
CMake führt den Konfigurationsschritt automatisch aus, wenn sich eine enthaltene CMake-Datei geändert hat. Manchmal hängt Ihre Logik jedoch von zusätzlichen / externen Status / Dateien ab, und Sie benötigen CMake, um den Konfigurationsschritt erneut auszuführen. (Es gibt Möglichkeiten, CMake mitzuteilen, dass das Ändern einer bestimmten Nicht-CMake-Datei eine Neukonfiguration auslösen soll.) Wenn Sie also den Konfigurationsschritt erneut ausführen müssen, CMake dies jedoch nicht automatisch tut, können Sie entweder die CMake-Datei berühren und einfügen oder einfach --cmake-force-configure
.
Ein Fall, in dem Sie make clean
aufrufen möchten, besteht darin, erneut zu überprüfen, ob Ihr Code Compiler-Warnungen enthält. Sobald eine Quelldatei kompiliert wurde, wird sie normalerweise erst neu kompiliert, wenn sie (oder enthaltene Header) geändert wurden. Bei diesem ersten Build wird möglicherweise eine Compiler-Warnung angezeigt, bei aufeinanderfolgenden Builds (vorausgesetzt, die Dateien haben sich nicht geändert) wird die Compiler-Warnung jedoch nicht erneut angezeigt. Das Übergeben von --cmake-clean-first
ist eine gute Möglichkeit, um sicherzustellen, dass alle Dateien neu kompiliert werden.
Manchmal enthält das Build-Verzeichnis zusätzlichen Status aus früheren Builds, der sich auf folgende Builds auswirken kann (z. B. hat eine frühere Version des Pakets einige Dateien im Build-Verzeichnis erstellt). Diese würden nicht bereinigt und könnten sich auf folgende Builds auswirken, selbst nachdem die Logik, die sie erstellt, entfernt wurde. Dies wäre also ein Fall, in dem das Löschen des gesamten build
-Verzeichnisses hilfreich wäre.
Ein weiterer Fall, in dem ich empfehlen würde, das Verzeichnis build
zu löschen, ist, wenn Sie auf ein Problem stoßen, das Sie nicht verstehen. Es besteht auch darin, ein Problem mit einem neuen Build zu reproduzieren, bevor es in einem Ticket gemeldet wird. Wenn Sie mit einem neuen Build beginnen, wird möglicherweise der unangenehme Zustand behoben, der sich im Laufe der Zeit / basierend auf dem, was in der Vergangenheit getan wurde, aufgebaut hat.
Wenn Sie ccache
eingerichtet haben, ist eine vollständige Neuerstellung nicht so kostspielig, da viele der Build-Artefakte zuvor zwischengespeichert wurden, sodass normalerweise nicht die gesamte Zeit für einen neuen Build benötigt wird.