¿Cuándo usar CMake clean / configure? edit
CMake almacena en caché varias informaciones en el archivo CMakeCache.txt
. Estos son, por ejemplo, directorios donde se han encontrado paquetes específicos y se han pasado definiciones usando -D
.
Algunos ejemplos cuando desee utilizar --cmake-clean-cache
:
- un paquete encontrado anteriormente debe buscarse de nuevo, ya que desea que se encuentre/use desde una ubicación diferente
- ha pasado una definición antes de la cual no desea que se establezca más en adelante
CMake ejecuta automáticamente el paso de configuración cuando cualquier archivo CMake incluido ha cambiado. Pero a veces su lógica depende de archivos de estado/externos adicionales y necesita CMake para ejecutar el paso de configuración de nuevo. (Hay formas de decirle a CMake que cambiar un archivo específico que no sea CMake debería desencadenar una reconfiguración.) Así que si necesita que el paso de configuración se ejecute de nuevo, pero CMake no lo hace automáticamente, puede tocar el archivo CMake incluido o simplemente pasar --cmake-force-configure
.
Un caso en el que es posible que desee invocar make clean
es volver a comprobar si el código tiene advertencias del compilador. Una vez que se ha compilado un archivo fuente, normalmente no se vuelve a compilar hasta que se cambia (o cualquier encabezado incluido). En esa primera compilación, es posible que vea una advertencia del compilador, pero en compilaciones consecutivas (suponiendo que los archivos no tengan cambios), no volverá a ver la advertencia del compilador. Pasar --cmake-clean-first
es una buena manera de garantizar que todos los archivos se recompilen.
A veces el directorio de compilación contiene estado adicional de compilaciones anteriores que podrían afectar a las siguientes compilaciones (por ejemplo, una versión anterior del paquete creó algunos archivos en el directorio de compilación). Estos no se limpiarían y podrían afectar a las siguientes compilaciones incluso después de que se haya eliminado la lógica que los creó. Así que este sería un caso en el que eliminar todo el directorio build
ayudaría.
Otro caso que recomendaría eliminar el directorio build
es cuando se encuentra con un problema que no entiende. También es para reproducir un problema usando una nueva compilación antes de reportarlo en un ticket. Comenzar con una nueva construcción podría resolver cualquier estado incómodo que se haya acumulado con el tiempo / basado en lo que se hizo en el pasado.
Si tiene ccache
configurar una reconstrucción completa no es tan costosa, ya que muchos de los artefactos de compilación se han almacenado en caché antes, por lo que generalmente no tomará toda la cantidad de tiempo para una nueva compilación.