Ja, es ist sicherlich erforderlich. CMake verwendet den Cache, wenn es während eines Builds erneut ausgeführt wird, weil eine CMakeList-Datei geändert wurde oder wenn Sie make rebuild_cache
. Außerdem lädt es den Cache zu Beginn eines normalen Konfigurationslaufs.
Der Standard Worflow für die Verwendung von CMake ist wie folgt:
- Run CMake in einem leeren Binärverzeichnis die erste Version des Projekts & Cache
- In CMake GUI oder
ccmake
oder ähnliches zu erzeugen, prüfen die Cache-Variablen, die beim ersten Durchlauf eingerichtet wurden, und ändern Sie sie nach eigenem Ermessen.
- Führen Sie CMake erneut aus (oder nur den Schritt Konfigurieren, wenn Ihre Benutzeroberfläche dies bietet).
- Wiederholen Sie die Schritte 2 & 3, bis Sie mit der Konfiguration zufrieden sind
- Wenn Sie nur Configure in 3 ausgeführt wurden, führen Sie generieren
Sie haben nun eine Build nach Ihrem Geschmack konfiguriert entsprechend.
Damit das oben Genannte funktioniert, müssen Benutzeränderungen im Cache Vorrang vor den in CMakeLists.txt angegebenen Standardcachewerten haben. Andernfalls würde der Benutzer Änderungen von Punkt 2 bei der nächsten Konfiguration verloren, überschrieben durch die projektspezifischen Standardwerte.
Deshalb ändern CMake-Befehle set(var ... CACHE)
die Cache-Variable var
nicht, wenn sie bereits existiert. Normalerweise sollte Ihr Projekt die Einrichtung des Caches als benutzerdefinierbare Standardwerte behandeln.
Wenn Sie wirklich Benutzer Entscheidungen in Ihrem Projekt benötigen außer Kraft zu setzen, können Sie:
FORCE
zum set
Befehl hinzufügen oder
- Verwendung
set
ohne CACHE
Nicht-Cache-Variablen zu setzen. Nicht-Cache-Variablen haben Vorrang vor gleichnamigen Cache-Variablen.
Weitere Details siehe [Was ist die CMake-Syntax zum Setzen und Verwenden von Variablen?] (https://stackoverflow.com/questions/31037882/whats-the-cmake-syntax-to-set-and-use-variables). – Florian