UpdateSubmodule.cmake 1.1 KB

12345678910111213141516171819202122
  1. # can be passed a relative path (to CMAKE_SOURCE_DIR) to update/checkout that submodule
  2. macro(update_submodule SUBMODULE)
  3. find_package(Git QUIET)
  4. if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
  5. option(GIT_SUBMODULE "Check submodules during build" ON)
  6. if(GIT_SUBMODULE)
  7. message(STATUS "Updating submoudle ${SUBMODULE}")
  8. execute_process(COMMAND ${GIT_EXECUTABLE} submodule update ${SUBMODULE}
  9. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  10. RESULT_VARIABLE GIT_SUBMOD_RESULT)
  11. if(NOT GIT_SUBMOD_RESULT EQUAL "0")
  12. message(FATAL_ERROR "git submodule update ${SUBMODULE} failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
  13. endif()
  14. endif()
  15. else()
  16. message("Git not found - skipping submodule update")
  17. endif()
  18. if(NOT EXISTS "${CMAKE_SOURCE_DIR}/${SUBMODULE}/.git")
  19. message(FATAL_ERROR "The submodule was not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
  20. endif()
  21. endmacro()