Quand utiliser CMake clean / configure? edit
CMake met en cache plusieurs informations dans le fichier CMakeCache.txt
. Ce sont par exemple des répertoires où un paquet spécifique a été trouvé et des définitions transmises en utilisant -D
.
Quelques exemples lorsque vous souhaitez utiliser --cmake-clean-cache
:
- un paquet précédemment trouvé doit être recherché à nouveau car vous souhaitez qu’il soit trouvé / utilisé à partir d’un emplacement différent
- vous avez passé une définition avant laquelle vous ne souhaitez plus être défini
CMake exécute automatiquement l’étape de configuration lorsqu’un fichier CMake inclus a changé. Mais parfois, votre logique dépend de fichiers / états externes supplémentaires et vous avez besoin de CMake pour exécuter à nouveau l’étape de configuration. (Il existe des moyens de dire à CMake que la modification d’un fichier non-CMake spécifique devrait déclencher une reconfiguration.) Donc, si vous avez besoin que l’étape de configuration s’exécute à nouveau mais que CMake ne le fait pas automatiquement, vous pouvez soit toucher et inclure le fichier CMake, soit simplement passer --cmake-force-configure
.
Un cas où vous voudrez peut-être appeler make clean
consiste à vérifier à nouveau si votre code contient des avertissements de compilateur. Une fois qu’un fichier source a été compilé, il n’est généralement pas recompilé tant qu’il (ou les en-têtes inclus) n’ont pas été modifiés. Sur cette première génération, vous pouvez voir un avertissement du compilateur, mais sur les versions consécutives (en supposant que les fichiers n’ont pas changé), vous ne verriez plus l’avertissement du compilateur. Passer --cmake-clean-first
est un bon moyen de s’assurer que tous les fichiers sont recompilés.
Parfois, le répertoire de construction contient des états supplémentaires des versions précédentes qui peuvent affecter les versions suivantes (par exemple, une version antérieure du package a créé des fichiers dans le répertoire de construction). Ceux-ci ne seraient pas nettoyés et pourraient affecter les versions suivantes même après la suppression de la logique les créant. Ce serait donc un cas où la suppression de l’ensemble du répertoire build
aiderait.
Un autre cas que je recommanderais de supprimer le répertoire build
est lorsque vous rencontrez un problème que vous ne comprenez pas. Il s’agit également de reproduire un problème à l’aide d’une nouvelle build avant de le signaler dans un ticket. Commencer par une nouvelle construction pourrait résoudre tout état gênant qui s’est accumulé au fil du temps / basé sur ce qui a été fait dans le passé.
Si vous avez ccache
configuré une reconstruction complète n’est pas si coûteuse, car de nombreux artefacts de construction ont déjà été mis en cache, ce qui ne prendra généralement pas le temps nécessaire pour une nouvelle construction.