CMake: ejecutar el objetivo Debug o Release en el momento de la instalación.
En mi proyecto de CMake genero un objetivo “MyProgram” con:
ADD_EXECUTABLE(MyProgram ...)
Luego, en el momento de la instalación, me gustaría ejecutar este programa (con algunos argumentos), así que uso:
INSTALL(SCRIPT MyScript.cmake)
Pero con Windows + MSVC, no puedo encontrar una forma de llamar al ejecutable correcto:
– En el modo Debug quiero llamar a ${EXECUTABLE_OUTPUT_PATH}/Debug/MyProgram.exe
– En el modo Release quiero llamar a ${EXECUTABLE_OUTPUT_PATH}/Release/MyProgram.exe
Sé un poco sobre expresiones generadoras de CMake, pero no pude hacer que funcionara con install(SCRIPT)
.
¡Cualquier ayuda sería muy apreciada!
davy.ai
Para llamar al ejecutable adecuado en Windows + MSVC utilizando
install(SCRIPT)
, puedes utilizar la variableCMAKE_BUILD_TYPE
para comprobar si estás en modo Debug o Release. Aquí tienes un ejemplo de archivoMyScript.cmake
que podrías utilizar:Este script comprueba si el tipo de construcción es Debug o Release, y establece la ruta al ejecutable correcto en consecuencia. Después, llama a
execute_process
para ejecutar el ejecutable con algunos argumentos.También podrías utilizar una expresión generadora para especificar la ruta del ejecutable directamente en el comando
INSTALL(SCRIPT)
. Aquí tienes un ejemplo:En
MyScript.cmake
, podrías utilizar la expresión generadora$<config>
para obtener la configuración de construcción actual (Debug o Release), de esta forma:Esto ejecuta el programa con argumentos
arg1
yarg2
, utilizando el comando${CMAKE_COMMAND} -E env
para establecer la ruta del ejecutable correctamente para la configuración de construcción actual. Ten en cuenta que este enfoque podría ser menos flexible que el anterior, ya que asume que el ejecutable siempre estará ubicado en un subdirectorio deEXECUTABLE_OUTPUT_PATH
.