CMake: Как автоматически выполнить git submodule update --init
Когда вы используете git submodules в вашем CMake-проекте, вы можете захотеть гарантировать, что подмодули инициализируются и обновляются автоматически при конфигурации проекта. Вы можете добиться этого, добавив пользовательскую команду в ваш файл CMakeLists.txt.
CMakeLists.txt
# Попытка автоматической инициализации git submodules во время конфигурации, чтобы
# downstream-потребителям не нужен отдельный ручной шаг. Это best-effort
# и будет запущено только когда Git доступен.
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()If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow