Forma adecuada de obtener una compilación fuera del código fuente en un proyecto cmake de varias partes

StackOverflow https://stackoverflow.com/questions/1230644

  •  22-07-2019
  •  | 
  •  

Pregunta

Utilizo cmake para construir, probar e instalar mi proyecto. Mi manera es un poco cruda: uso scripts como este para obtener una compilación fuera de la fuente:

DIR=debug_build &&
rm -fr ./${DIR} &&
mkdir -p ${DIR} &&
cd ${DIR} &&
cmake -D CMAKE_BUILD_TYPE=Debug $@ .. &&
make 

Supongo que al menos podría ponerlo en un archivo MAKE, pero ¿no es extraño usar Makefile para ejecutar cmake para generar nuevos Makefiles y ejecutar otro make?

¿Cuál es la forma correcta de hacerlo? ¿Tiene cmake una opción para evitar llamar a "cd"?

Recientemente se volvió aún más complicado cuando facto leí una biblioteca que me gustaría compilar, probar y distribuir por separado. Quiero evitar la duplicación de todas las cosas que tengo en mi CMakeLists.txt superior.

¿Cómo hacerlo correctamente con cmake?

¿Fue útil?

Solución

No, CMake no tiene tal opción. Por lo general, me gusta tener un Makefile de contenedor para controlar las invocaciones CMake.

El problema principal aquí es que el generador de archivos Makefile no admite la especificación de la configuración cuando se ejecuta make, como lo hace el generador de Visual Studio. Creo que se ha presentado una solicitud de función para esto, pero sería un procedimiento muy invasivo para solucionarlo.

Otros consejos

Esta parece ser la forma más común de manejar esto. Por lo general, he visto (y usado) scripts por lotes (ya sea scripts de shell en Unix, o simplemente archivos por lotes en Windows) para manejar esto, por lo que ejecutar ./build creará la carpeta de compilación, el CD allí, ejecutará cmake, compilará, y luego irá volver a la carpeta original.

También se podría usar CMake GUI, que creará la carpeta de compilación automáticamente si no existe.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top