wanneer cmake clean/configure gebruiken? Bewerk
CMake slaat verschillende informatie in het bestand CMakeCache.txt
op. Dit zijn bijvoorbeeld directory ‘ s waar een specifiek pakket is gevonden en definities zijn doorgegeven met -D
.
enkele voorbeelden wanneer u --cmake-clean-cache
wilt gebruiken:
- een eerder gevonden pakket moet opnieuw worden doorzocht omdat u wilt dat het wordt gevonden/gebruikt vanaf een andere locatie
- u hebt een definitie gepasseerd waarvoor u niet meer wilt worden ingesteld door naar voren te gaan
CMake voert automatisch de configuratiestap uit wanneer een inbegrepen cmake-bestand is gewijzigd. Maar soms is je logica afhankelijk van extra / externe status / bestanden en heb je CMake nodig om de configure-stap opnieuw uit te voeren. (Er zijn manieren om cmake te vertellen dat het wijzigen van een specifiek niet-cmake-bestand een herconfiguratie moet veroorzaken.) Dus als je de configure stap nodig hebt om opnieuw uit te voeren, maar CMake doet het niet automatisch, dan kun je het cmake-bestand aanraken en toevoegen of gewoon --cmake-force-configure
doorgeven.
een geval waarin u make clean
wilt aanroepen, is om opnieuw te controleren of u een compilerwaarschuwing heeft. Zodra een bronbestand is gecompileerd wordt het meestal niet opnieuw gecompileerd totdat het (of een opgenomen headers)) veranderd. Op die eerste build kun je een compiler waarschuwing zien, maar op opeenvolgende builds (ervan uitgaande dat de bestanden geen wijzigingen hebben) zie je de compiler waarschuwing niet meer. Het doorgeven van --cmake-clean-first
is een goede manier om ervoor te zorgen dat alle bestanden opnieuw gecompileerd worden.
soms bevat de build directory een extra status van eerdere builds die van invloed kan zijn op volgende builds (bijvoorbeeld een eerdere versie van het pakket heeft een aantal bestanden in de build directory aangemaakt). Die zouden niet worden opgeschoond en kunnen invloed hebben op de volgende builds, zelfs nadat de logica die ze maakt is verwijderd. Dit zou dus een geval zijn waarin het verwijderen van de hele build
map zou helpen.
een ander geval dat ik zou aanraden om de build
map te verwijderen is wanneer u een probleem tegenkomt dat u niet begrijpt. Het is ook om een probleem te reproduceren met behulp van een verse build alvorens het te melden in een ticket. Te beginnen met een frisse build zou kunnen oplossen wat onhandig staat heeft opgebouwd in de tijd / op basis van wat er in het verleden werd gedaan.
als u ccache
hebt ingesteld, is een volledige heropbouw niet zo duur omdat veel van de bouwartefacten eerder in de cache zijn opgeslagen, dus het zal meestal niet de volledige tijd kosten voor een nieuwe bouw.