2017-09-25 1 views
0

J'ai ajouté cible personnalisée à mon CMakeLists.txtMettre fin à l'exécution continue de la cible CMAKE?

add_custom_target (
     patch 
     COMMAND echo "Creating build" 
     COMMAND cd ${CMAKE_BINARY_DIR} && sudo bash a.sh 
     COMMAND cd ${CMAKE_BINARY_DIR} && sudo bash b.sh name 
     COMMAND cd ${CMAKE_BINARY_DIR} && sudo bash b.sh address 

     DEPENDS authorise 
     DEPENDS copy 
    ) 

Ce qui se produit en cas ci-dessus est, j'ai mis fin à l'exécution de a.sh avec exit 0 sur certaines conditions, mais après la fin de ce script cmake se déplace plus pour exécuter b.sh

Ce que je veux, c'est que, lorsque j'ai terminé le premier script, l'exécution de cmake target doit également être terminée. Je ne veux pas b.sh pour l'exécuter.

Est-il possible que l'on peut arrêter ou mettre fin à l'exécution de CMAKE target

toute aide sera appréciée

Répondre

1

Une série de COMMAND s en add_custom_target est traduit à cmd1 && cmd2 && cmd3. Donc, au lieu de sortir avec le code 0, vous devez retourner quelque chose d'autre. Catch Ctrl+C signal dans vos scripts shell et le code de retour non nul:

trap ctrl_c INT 

function ctrl_c() { 
     exit 1 
} 
+0

pouvez-vous en mesure d'élaborer plus comprendront plus parfaitement, comme je suis novice dans 'cmake' @arrowd –

+0

Ajouter une réponse en prenant référence de mention de code en question –

+0

Vous n'avez pas besoin de modifier le code CMake. Changez les scripts en ajoutant Ctrl + C handler. – arrowd