Hvornår skal du bruge CMake clean / configure? Rediger
CMake caches flere oplysninger i filen CMakeCache.txt
. Dette er f.eks. mapper, hvor specifik pakke er fundet og definitioner bestået ved hjælp af -D
.
et par eksempler, når du vil bruge --cmake-clean-cache
:
- en tidligere fundet pakke skal søges igen, da du vil have den fundet/brugt fra en anden placering
- du har bestået en definition, før hvilken du ikke ønsker at blive indstillet længere fremad
CMake kører automatisk konfigurationstrinnet, når en inkluderet CMake-fil er ændret. Men nogle gange afhænger din logik af yderligere/ekstern tilstand/filer, og du har brug for CMake for at køre konfigurationstrinnet igen. (Der er måder at fortælle CMake, at ændring af en bestemt ikke-CMake-fil skal udløse en omkonfiguration.) Så hvis du har brug for konfigurationstrinnet til at køre igen, men CMake ikke gør det automatisk, kan du enten røre ved og inkludere CMake-fil eller bare passere --cmake-force-configure
.
et tilfælde, hvor du måske vil påberåbe dig make clean
, er at kontrollere, om din kode har nogen kompilatoradvarsler. Når en kildefil er blevet kompileret, bliver den ofte ikke kompileret, før den (eller eventuelle inkluderede overskrifter) ændres. På den første build kan du muligvis se en kompilatoradvarsel, men på fortløbende builds (forudsat at filerne ikke har ændringer), ville du ikke se kompilatoradvarslen igen. Passing --cmake-clean-first
er en god måde at sikre, at alle filer bliver genkompileret.
nogle gange indeholder build-mappen yderligere tilstand fra tidligere builds, som kan påvirke følgende builds (f.eks. De ville ikke blive ryddet op og kunne påvirke følgende builds selv efter logikken skabe dem er blevet fjernet. Så dette ville være et tilfælde, hvor sletning af hele build
– mappen ville hjælpe.
et andet tilfælde, Jeg vil anbefale at slette mappen build
, er, når du løber ind i et problem, du ikke forstår. Det er også at gengive et problem ved hjælp af en ny bygning, før du rapporterer det i en billet. Startende med en frisk build kan løse uanset akavet tilstand har opbygget over tid / baseret på, hvad der blev gjort i fortiden.
hvis du har ccache
setup en fuld genopbygge er ikke så dyrt, da en masse af bygge artefakter er blevet cachelagret før, så det normalt ikke vil tage den fulde mængde tid til en frisk build.