J'ai un projet C++ (Superproject) qui dépend d'un autre projet sur lequel je n'ai aucun contrôle (Subproject). Pour pouvoir construire mon projet, je dois d'abord construire le sous-projet, puis le super-projet, qui se lie aux bibliothèques construites par le sous-projet.
Les deux projets utilisent CMake pour configurer les Makefiles correspondants. Manuellement, je devrais télécharger le sous-projet dans un sous-dossier du super-projet ( externals/Subproject
) et ensuite cd
en externals/Subproject/build
et exécuter cmake ..
et ensuite make target1
.
J'aimerais automatiser ce processus à partir du fichier CMakeLists de Superproject en utilisant la fonctionnalité ExternalProject_Add. Jusqu'à présent, j'ai quelque chose comme
ExternalProject_Add(Subproject
DOWNLOAD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/externals"
GIT_REPOSITORY "git@path/to/repo/Subproject.git"
GIT_TAG "master"
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build"
)
qui télécharge et construit correctement le all
objectif du sous-projet. Mais lorsque j'essaie de le modifier pour qu'il ne construise que le sous-projet target1
du sous-projet avec
ExternalProject_Add(Subproject
DOWNLOAD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/externals"
GIT_REPOSITORY "git@path/to/repo/Subproject.git"
GIT_TAG "master"
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build"
BUILD_COMMAND "${MAKE} target1"
)
il ne parvient pas à exécuter le make
se plaignant que /bin/sh
ne sait pas ce que target1
est.
Comment puis-je modifier la cible de compilation de ExternalProject_Add
pour répondre à mes besoins ?