2010-05-28 7 views
0

J'essaie d'utiliser ccache avec CMake. J'ai placé des liens symboliques nommés gcc, g++ et c++ dans /usr/local/bin. Si je cours make, ajoutez un changement à CMakeLists.txt qui n'affecte pas les fichiers compilés (ajoutez la bibliothèque inutilisée juste pour forcer la construction de toutes les cibles) et relancez make, tout est recompilé comme s'il n'y avait pas de ccache. Toutefois, si je supprime tous les fichiers générés par CMake, puis appelez cmake; make, tout fonctionne correctement, et les fichiers objets sont récupérés à partir du cache, même si je change CMakeLists.txt.ccache ne clique pas sur le cache sans supprimer les fichiers CMake

On dirait que quelque chose créé par CMake empêche de toucher le cache. J'ai essayé de rechercher à travers la sortie verbeuse de make et cmake, mais n'a pas pu trouver de dépendances qui pourraient provoquer ce comportement.

Répondre

0

Je vous suggère d'installer ccache 3.0 (publié il y a quelques jours) et de définir CCACHE_LOGFILE dans un fichier. ccache imprimera alors ce qu'il fait à ce dossier et vous obtiendrez probablement un indice au sujet du problème. Quand cmake s'exécute, il place les chemins complets des binaires dans CMakeCache.txt.

0

Il s'agit d'une optimisation de la vitesse pour que les configurations futures soient rapides (une partie de la raison pour laquelle autoconf prend tant de temps est qu'il recherche autant de choses sur &). Si vous voulez forcer cmake à réanalyser, supprimez le fichier CMakeCache.txt ou filtrez à partir de ce fichier les variables contenant les chemins d'accès aux outils que vous souhaitez actualiser.