Вызов add_subdirectory только для каталогов с CMakeLists.txt

This commit is contained in:
Andrei Astafev 2023-08-03 16:54:23 +03:00
parent 8d27622312
commit 81d61deb9b

View File

@ -11,7 +11,7 @@ myx_download_content
Обязательный параметр: `NAME` - имя целевого каталога.
Параметр `DOWNLOAD_DIR` содержит имя каталога, в который будет загружаться
содержимое (по умолчанию `downloads`).
содержимое (по умолчанию `_downloads`).
Параметр `GIT_REPOSITORY` содержит адрес внешнего проекта, который нужно
загрузить с помощью git.
Параметр `GIT_TAG` содержит используемые метку, идентификатор коммита или
@ -55,27 +55,28 @@ function(myx_download_content NAME)
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${ARG_DOWNLOAD_DIR})
endif()
set(WORK_DIR "${ARG_DOWNLOAD_DIR}/${NAME}")
if(ENABLE_DOWNLOAD_CONTENT AND GIT_EXECUTABLE AND ARG_GIT_REPOSITORY)
if(NOT IS_DIRECTORY ${ARG_DOWNLOAD_DIR}/${NAME})
if(NOT IS_DIRECTORY ${WORK_DIR})
execute_process(COMMAND ${GIT_EXECUTABLE} clone ${ARG_GIT_REPOSITORY} ${NAME}
WORKING_DIRECTORY ${ARG_DOWNLOAD_DIR})
else()
execute_process(COMMAND ${GIT_EXECUTABLE} fetch
WORKING_DIRECTORY ${ARG_DOWNLOAD_DIR}/${NAME})
WORKING_DIRECTORY ${WORK_DIR})
endif()
if(ARG_GIT_TAG)
execute_process(COMMAND ${GIT_EXECUTABLE} checkout ${ARG_GIT_TAG}
WORKING_DIRECTORY ${ARG_DOWNLOAD_DIR}/${NAME})
WORKING_DIRECTORY ${WORK_DIR})
else()
if(ARG_AUTOPULL)
execute_process(COMMAND ${GIT_EXECUTABLE} pull
WORKING_DIRECTORY ${ARG_DOWNLOAD_DIR}/${NAME})
WORKING_DIRECTORY ${WORK_DIR})
endif()
endif()
endif()
if(NOT CMAKE_SCRIPT_MODE_FILE)
add_subdirectory(${ARG_DOWNLOAD_DIR}/${NAME} EXCLUDE_FROM_ALL)
if(NOT CMAKE_SCRIPT_MODE_FILE AND EXISTS "${WORK_DIR}/CMakeLists.txt")
add_subdirectory(${WORK_DIR} EXCLUDE_FROM_ALL)
endif()
endfunction()