Parece que necesitamos crear una carpeta separada para cada tipo de compilación (depuración/publicación), ejecutar cmake en cada uno y generar un archivo MAKE separado para la configuración de depuración/liberación. ¿Es posible crear un solo archivo MAKE utilizando cmake que admita la configuración de depuración/liberación al mismo tiempo y cuando realmente ejecutemos "make" que creará carpetas separadas para los productos intermedios y finales (como dlls, exe).Can Cmake genera un único archivo MAKE que admite depuración y publicación
10
A
Respuesta
8
Hasta donde yo sé, esto no se puede lograr usando un solo conjunto de scripts de compilación. Sin embargo, lo que puede hacer es tener dos subdirectorios de su área de trabajo:
build/
build/debug
build/release
Luego hacer:
$ cd build
$
$ cd build/debug
$ cmake -DCMAKE_BUILD_TYPE=Debug ../..
$ make
$
$ cd ../release
$ cmake -DCMAKE_BUILD_TYPE=Release ../..
$ make
Si es necesario, se puede añadir otro script de construcción en el directorio build
como tal:
#!/bin/sh
cd debug && make && cd ..
cd release && make && cd ..
1
Esto se puede lograr utilizando el comando ADD_CUSTOM_TARGET
. Por ejemplo, si desea añadir tanto los objetivos de depuración y liberación en su makefile, añada lo siguiente a su archivo CMakeLists.txt:
ADD_CUSTOM_TARGET(debug
COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Creating the executable in the debug mode.")
ADD_CUSTOM_TARGET(release
COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
COMMENT "Creating the executable in the release mode.")
Entonces, después de configurar con cmake, puede ejecutar make debug
para hacer que el destino de depuración y ejecute make release
para hacer que el objetivo de publicación esté en el mismo directorio.
Cuestiones relacionadas
- 1. Incluir archivo MAKE externo con CMake
- 2. cmake "make run"
- 3. autoconf no genera el archivo MAKE?
- 4. cmake - evitando que `make clean` limpie ExternalProject
- 5. equivalente "make dist" en CMake
- 6. Cmake vs make sample codes?
- 7. Depuración GNU make
- 8. Cmake ignorando CMAKE_BUILD_TYPE = depuración
- 9. BSD Make y GNU Make makefile compatible
- 10. cmake "make install" a la máquina remota?
- 11. depuración vs lanzamiento en CMAKE
- 12. CMake & CTest: make test does build test
- 13. CMAKE: compilar biblioteca y vincularla
- 14. Cómo documentar un archivo MAKE?
- 15. ¿Cómo obtengo CMake para crear un dll y su archivo lib que coincida?
- 16. Biblioteca de depuración y liberación Vinculación con CMAKE (VISUAL STUDIO)
- 17. ¿Cómo generar dependencias de compilación desde CMake o make?
- 18. ¿Cómo se genera un número de pedido único?
- 19. Can Spring Security admite múltiples puntos de entrada?
- 20. cmake: ¿Cómo agregar un add_custom_command que simplemente ejecuta un shellscript?
- 21. Obtener el nombre del archivo MAKE del archivo MAKE
- 22. Colón y $ en el archivo MAKE
- 23. ¿Cómo puedo escribir un archivo MAKE para autodetectar y paralelizar la compilación con GNU Make?
- 24. ¿Llamar a cmake desde make para crear Makefiles?
- 25. extensión de archivo MAKE
- 26. extensión de archivo MAKE
- 27. Cómo comprobar si un archivo existe en un archivo MAKE
- 28. Depende del archivo make
- 29. ¿Cómo ejecutar un archivo MAKE en Windows?
- 30. ¿Qué significa "todo" en un archivo MAKE?
¿qué pasa con el archivo sln de Visual Studio, también genera solo depuración o solo libera configuración o es compatible con ambos en el mismo archivo .sln? – user243655
@ user243655: Parece que genera múltiples configuraciones: 'Debug',' Release', 'MinSizeRel' y' RelWithDebInfo'. –
Muchas gracias por la información. – user243655