L'exécution d'une commande bash via CMake

J'essaie d'avoir CMake exécuter trois commandes bash ou un script bash. Cependant, je n'arrive pas à le faire fonctionner.

Les commandes bash sont:

    cd ${CMAKE_SOURCE_DIR}/dependencies/library
    make
    cd ${CMAKE_BINARY_DIR}

Essentiellement, je voudrais CMake pour la construction de la bibliothèque dans ce répertoire s'il n'existe pas déjà.

Voici le CMake code que j'ai essayé:

if(NOT "${CMAKE_SOURCE_DIR}/dependencies/library/lib.o")
   execute_process(COMMAND cd ${CMAKE_SOURCE_DIR}/dependencies/library)
   execute_process(COMMAND make)
   execute_process(COMMAND cd ${CMAKE_BINARY_DIR})
endif(NOT "${CMAKE_SOURCE_DIR}/dependencies/library/lib.o")

Cependant, il n'est pas de construire quelque chose. Ce que je fais mal?

Aussi, alors je suis ici pour demander ceci: si le troisième commande, déplacez-vous dans le dossier binaire, être inclus?

Merci!

Tout d'abord pourquoi n'êtes-Vous pas à l'aide de WORKING_DIRECTORY paramètre à la place de ceux cd commandes?Quelque chose comme execute_process(COMMAND make WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/dependencies/library). Je suppose que, execute_process() appels ne partage pas le même environnement. Aussi, si j'étais Vous, je voudrais vérifier le add_custom_target() et add_custom_command() pour ce genre de chose.
Je ne peux pas commenter sur la plupart de ce @Kamiccolo dit, mais je peux dire que je pense que le détail sur execute_process pas l'état de partage est presque certainement juste. C'est incroyablement probable que le cd dans la première commande permet de changer de répertoire seulement pour que processus et non pour tous les autres.
Si vous avez l'intention de construire une bibliothèque tierce, vous êtes probablement mieux d'utiliser le ExternalProject module.

OriginalL'auteur assignment_operator | 2014-09-05