CMake : comment exécuter automatiquement git submodule update --init

Lorsque vous utilisez des sous-modules git dans votre projet CMake, vous pouvez vouloir garantir que les sous-modules soient initialisés et mis à jour automatiquement lors de la configuration du projet. Vous pouvez y parvenir en ajoutant une commande personnalisée dans votre fichier CMakeLists.txt.

CMakeLists.txt
# Tenter d'initialiser les sous-modules git automatiquement pendant la configuration
# afin que les utilisateurs en aval n'aient pas besoin d'une étape manuelle séparée.
# Ceci est une tentative au mieux et ne s'exécutera que si Git est disponible.
find_package(Git QUIET)
if(GIT_FOUND)
  message(STATUS "Git trouvé : initialisation/mise à jour des sous-modules...")
  execute_process(
    COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
    RESULT_VARIABLE _git_submodule_result
    OUTPUT_QUIET ERROR_QUIET
  )
  if(NOT _git_submodule_result EQUAL 0)
    message(WARNING "git submodule update --init --recursive a échoué avec le code de sortie ${_git_submodule_result}")
  endif()
else()
  message(STATUS "Git introuvable ; initialisation automatique des sous-modules git ignorée")
endif()

Check out similar posts by category: CMake, Git