kiedy używać CMake clean/configure? edycja
CMake buforuje kilka informacji w pliku CMakeCache.txt
. Są to np. katalogi, w których znaleziono konkretny pakiet i definicje przekazane za pomocą -D
.
kilka przykładów, gdy chcesz użyć --cmake-clean-cache
:
- poprzednio znaleziony pakiet powinien zostać przeszukany ponownie, ponieważ chcesz, aby został znaleziony/użyty z innej lokalizacji
- przekazałeś definicję, przed którą nie chcesz być ustawiany dalej
CMake automatycznie uruchamia krok configure, gdy dowolny dołączony plik CMake został zmieniony. Ale czasami twoja logika zależy od dodatkowego / zewnętrznego stanu / plików i potrzebujesz CMake, aby ponownie uruchomić krok configure. (Istnieją sposoby, aby powiedzieć CMake ‘ owi, że zmiana określonego pliku innego niż CMake powinna spowodować ponowną konfigurację.) Więc jeśli chcesz skonfigurować krok, aby uruchomić ponownie, ale CMake nie robi tego automatycznie, możesz albo dotknąć i dołączyć plik CMake lub po prostu przekazać --cmake-force-configure
.
przypadkiem, w którym możesz chcieć wywołać make clean
, jest ponowne sprawdzenie, czy kod ma ostrzeżenia kompilatora. Po skompilowaniu pliku źródłowego zwykle nie jest on rekompilowany, dopóki nie zmieni się jego (lub dołączonych nagłówków). Przy tej pierwszej kompilacji możesz zobaczyć Ostrzeżenie kompilatora, ale przy kolejnych kompilacjach (zakładając, że pliki nie uległy zmianie) nie zobaczysz ostrzeżenia kompilatora ponownie. Przekazanie --cmake-clean-first
jest dobrym sposobem na zapewnienie, że wszystkie pliki są rekompilowane.
czasami katalog kompilacji zawiera dodatkowy stan z poprzednich kompilacji, który może mieć wpływ na kolejne Kompilacje (np. wcześniejsza wersja pakietu utworzyła niektóre pliki w katalogu kompilacji). Te nie zostaną oczyszczone i mogą wpływać na kolejne Kompilacje nawet po usunięciu logiki, która je tworzy. Tak więc byłby to przypadek, w którym usunięcie całego katalogu build
pomogłoby.
kolejny przypadek polecam usunięcie katalogu build
, gdy napotkasz problem, którego nie rozumiesz. Jest to również odtworzenie problemu przy użyciu świeżej kompilacji przed zgłoszeniem go w paragonie. Rozpoczęcie nowej kompilacji może rozwiązać jakikolwiek niezręczny stan, który powstał w czasie / w oparciu o to, co zostało zrobione w przeszłości.
jeśli masz ccache
skonfiguruj pełną przebudowę nie jest tak kosztowna, ponieważ wiele artefaktów kompilacji zostało wcześniej buforowanych, więc zwykle nie zajmie to pełnej ilości czasu na świeżą kompilację.