Skip to content

Instantly share code, notes, and snippets.

@dvigne
Created March 24, 2021 20:47
Show Gist options
  • Save dvigne/31aa238e1b3afcef560a1522493eb1ae to your computer and use it in GitHub Desktop.
Save dvigne/31aa238e1b3afcef560a1522493eb1ae to your computer and use it in GitHub Desktop.
Download Submodules Quietly Using CMake. Referenced From https://cliutils.gitlab.io/modern-cmake/chapters/projects/submodule.html
# Initialize Git Submodules if not already done on clone
find_package(Git QUIET)
if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
# Update submodules as needed
option(GIT_SUBMODULE "Check submodules during build" ON)
if(GIT_SUBMODULE)
message(STATUS "Submodule update")
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
if(NOT GIT_SUBMOD_RESULT EQUAL "0")
message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules manually")
endif()
endif()
else()
message(FATAL_ERROR "Git CMake Module Not Found, Please ensure that git is installed")
endif()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment