2011-11-08 8 views
8

Cuando uso el gnu clásico Realizo las acciones posteriores a la compilación, como flashear el dispositivo (si es un dispositivo incrustado) y otras acciones similares. El parpadeo real generalmente se oculta detrás de un pequeño sctipt o algunos comandos.cmake: ¿Cómo agregar un add_custom_command que simplemente ejecuta un shellscript?

Entonces puedo escribir algo así como

make flash 

así que primero construir el código y luego termina en el objetivo. El clásico Makefile podría tener algo como en él:

.PHONY: flash 
flash: main.bin 
    scripts/do_flash.pl main.bin 

Pero ¿Cómo agrego este tipo de acciones posterior a construir a una acumulación cmake?

¿Cómo agrego un "comando personalizado" que simplemente ejecuta un shellscript?

esta pregunta habla de add_custom_command: La cuestión cmake add custom command se siente como que está cerca, pero el add_custom_command parece necesitar un "archivo de salida" para trabajar. Pero en este caso está sucediendo algo, no se genera.

¿Qué pondría en el CMakeLists.txt para agregar una acción tan personalizada?

/Gracias


Como referencia, un enlace a la documentación sobre este tema cmake

Respuesta

11

Prueba esto:

add_custom_target(flash 
    COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/do_flash.pl ${MAIN_BIN_FILE} 
    DEPENDS ${MAIN_BIN_FILE} 
) 
+0

+1 Eso se ve bien :) – Johan

+1

por cierto, ¿cómo sabes que $ {MAIN_BIN_FILE} debería transformarse en main.bin? ¿Hay algún tipo de magia de cmake, o debo definir un varialbe llamado MAIN_BIN_FILE y darle el valor main.bin? – Johan

+1

Sí, deberías definirlo tú mismo. Supuse que producirás main.bin mediante add_custom_command (OUTPUT $ {MAIN_BIN_FILE} ...). Si no es el caso, puede reemplazarlo con una cadena constante. En ese caso, también puede eliminar la cláusula DEPENDS de add_custom_target. – arrowd

Cuestiones relacionadas