CMake: Wie man automatisch git submodule update --init ausführt

Wenn du Git-Submodule in deinem CMake-Projekt verwendest, möchtest du möglicherweise sicherstellen, dass die Submodule beim Konfigurieren des Projekts automatisch initialisiert und aktualisiert werden. Du kannst dies erreichen, indem du einen benutzerdefinierten Befehl in deiner CMakeLists.txt-Datei hinzufügst.

CMakeLists.txt
# Git-Submodule automatisch während der Konfiguration initialisieren, damit
# Downstream-Nutzer keinen separaten manuellen Schritt benötigen. Dies ist Best-Effort
# und wird nur ausgeführt, wenn Git verfügbar ist.
find_package(Git QUIET)
if(GIT_FOUND)
  message(STATUS "Git found: initializing/updating submodules...")
  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 failed with exit code ${_git_submodule_result}")
  endif()
else()
  message(STATUS "Git not found; skipping automatic git submodule initialization")
endif()

Ähnliche Beiträge nach Kategorie: CMake, Git