visual tutorial studio make cmake

tutorial - Edición versus eliminación de CMakeCache.txt después de mover el directorio



cmake visual studio 2017 (2)

Si CMake se vuelve a ejecutar después de mover el directorio de origen, se produce un error como este:

CMake Error: el directorio actual CMakeCache.txt /new-path/CMakeCache.txt es diferente del directorio / old-path donde se creó CMakeCache.txt. Esto puede provocar que se creen binarios en el lugar equivocado. Si no está seguro, vuelva a ejecutar el CMakeCache.txt

¿Cuál es el mejor enfoque para lidiar con esto? Parece que eliminar la caché funciona. ¿Por qué podría querer editar CMakeCache.txt , en lugar de simplemente eliminarlo?


Creo que la mejor opción es eliminar el caché y volver a crearlo. De hecho, tiendo a ir más allá y eliminar todo el árbol de compilación si necesito mover la fuente, pero esto probablemente sea excesivo.

El archivo CMakeCache.txt se puede editar a través de la GUI de CMake o a mano si está seguro de lo que está haciendo, pero me parece que no vale la pena el esfuerzo en comparación con volver a ejecutar cmake desde cero. Supongo que si ejecutar CMake lleva mucho tiempo (por ejemplo, si usa ExternalProject_Add que podría implicar la descarga y creación de un recurso de terceros), puede ser preferible modificar el CMakeCache.txt.

Este artículo proporciona más detalles sobre el archivo CMakeCache.txt y lo edita. En particular, dice:

La razón principal para editar el caché sería darle a CMake la ubicación de una biblioteca nativa, como JPEG, o detener el uso de una biblioteca nativa y usar una versión de la biblioteca en su árbol fuente.

CMake no alterará una entrada existente en el archivo de caché. Si sus archivos CMakeLists.txt cambian significativamente, deberá eliminar las entradas relevantes del archivo de caché. Si aún no ha editado manualmente el archivo de caché, puede eliminarlo antes de volver a ejecutar CMake.


Me encontré con el mismo error al ejecutar un código CGAL (que ya había compilado en algún momento). Todo lo que hice fue crear un nuevo directorio y copiar el archivo ".cpp" allí y ejecutar "CGAL_create_CMakelists" y luego ejecutar el comando cmake. Funcionó de esta manera. No sé exactamente, pero creo que el error se produce cuando ejecuta el código que ya estaba compilado y ya tiene sus archivos de compilación en la carpeta (debido a la compilación previa).