kdy použít CMake clean/configure? upravit
CMake ukládá několik informací do souboru CMakeCache.txt
. Jedná se např. o adresáře, kde byl nalezen konkrétní balíček a definice předány pomocí -D
.
několik příkladů, kdy chcete použít --cmake-clean-cache
:
- dříve našel balíček by měl být hledán znovu, protože chcete, aby to bylo našel/použité z jiného místa
- jste prošel definici, než které nechcete být nastaveny už v pohybu vpřed
CMake se automaticky spustí konfigurace krok při jakékoli ceně CMake soubor změnil. Někdy však vaše logika závisí na dalším / externím stavu / souborech a potřebujete CMake znovu spustit krok konfigurace. (Existují způsoby, jak říct CMake, že změna konkrétního souboru bez CMake by měla vyvolat rekonfiguraci.) Takže pokud potřebujete konfigurovat krok znovu spustit, ale CMake nedělá to automaticky můžete buď dotknout a zahrnuty CMake soubor nebo jen projít --cmake-force-configure
.
případ, kdy byste mohli chtít vyvolat make clean
, je znovu zkontrolovat, zda kód obsahuje varování kompilátoru. Jakmile zdrojový soubor byl zkompilován to běžně není překompilován, dokud to (nebo jakékoliv zahrnuté záhlaví)) změnil. Na první stavět můžete vidět kompilátor upozornění, ale na po sobě jdoucích staví (za předpokladu, že soubory, ne změny) nemůžeš vidět kompilátor varování znovu. Předávání --cmake-clean-first
je dobrý způsob, jak zajistit, aby všechny soubory byly překompilovány.
někdy adresář sestavení obsahuje další stav z předchozích sestavení, který může ovlivnit následující sestavení (např. starší verze balíčku vytvořila některé soubory v adresáři sestavení). Ty by nebyly vyčištěny a mohly by ovlivnit následující sestavení i po odstranění logiky, která je vytváří. Takže by to byl případ, kdy by odstranění celého adresáře build
pomohlo.
dalším případem, který bych doporučil odstranit adresář build
, je, když narazíte na problém, kterému nerozumíte. Je také reprodukovat problém pomocí nové sestavy před nahlášením do lístku. Začíná s čerstvým stavět může vyřešit cokoliv nepříjemné stát vybudoval v průběhu času, / na základě toho, co bylo provedeno v minulosti.
Pokud máte ccache
nastavení full přestavět není to nákladné, protože hodně stavět artefakty byly uloženy do mezipaměti dříve, tak to obvykle nebude mít plnou výši čas na nový build.