Cómo forzar que un objetivo se reconstruya si se actualiza un script dependiente?
Estoy escribiendo algunos scripts personalizados que se invocan en comandos personalizados para objetivos de CMake. Quiero que los objetivos se reconstruyan si alguno de los scripts se actualiza (por ejemplo, touch script.sh
). He probado varias variaciones usando el argumento DEPENDS
, pero nada de lo que he intentado funciona.
Aquí está una versión simplificada de lo que tengo:
function(run_mi_regla_especial objetivo)
set(script_a_ejecutar ${CMAKE_SOURCE_DIR}/scripts/script.sh)
add_custom_command(
TARGET ${objetivo} PRE_BUILD
COMMAND find ${CMAKE_CURRENT_SOURCE_DIR} -name "*.hpp" -exec ${script_a_ejecutar} {} +
DEPENDS ${script_a_ejecutar}
)
endfunction()
davy.ai
Para asegurarse de que el objetivo de CMake se reconstruya cuando alguno de los scripts personalizados se actualice, debe utilizar el argumento “OUTPUT” del comando “add_custom_command()” para especificar los archivos generados, y luego utilizarlos como “DEPENDS” para el objetivo. Aquí hay una versión actualizada de la función “run_my_special_rule()”:
En esta versión, hemos agregado un argumento “OUTPUT” a “add_custom_command()”, especificando el nombre de un archivo que será generado por el script. También hemos cambiado el “TARGET” a un objetivo personalizado (“add_custom_target()”), y lo hemos hecho depender del archivo generado. Esto significa que cada vez que se ejecuta el comando personalizado y se actualizan los archivos generados, se reconstruirá el objetivo personalizado.