| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | function(ctkFunctionCheckoutRepo)  ctkMacroParseArguments("" "NAME;GIT_URL;GIT_TAG;GIT_PROTOCOL;CHECKOUT_DIR" "" ${ARGN})  if(${_NAME}_DIR)    # if a *_DIR variable is supplied, the repository is not cloned.    return()  endif()  foreach(_required_arg NAME GIT_URL)    if(NOT _${_required_arg})      message(FATAL_ERROR "${_required_arg} is empty")    endif()  endforeach()    if(NOT _GIT_PROTOCOL)    set(_GIT_PROTOCOL ${git_protocol})  endif()  if(NOT _CHECKOUT_DIR)    set(_CHECKOUT_DIR ${CMAKE_CURRENT_BINARY_DIR})  endif()  if(NOT IS_ABSOLUTE "${_CHECKOUT_DIR}")    message(FATAL_ERROR "The value of the CHECKOUT_DIR argument must be an absolute path.")  endif()    if(NOT _GIT_TAG)    set(_GIT_TAG origin/master)  endif()    set(_repo_build_dir ${CMAKE_CURRENT_BINARY_DIR}/${_NAME}-proj)  configure_file(${CTK_CMAKE_DIR}/ctkCheckoutRepo.cmake.in                 ${_repo_build_dir}/CMakeLists.txt)  execute_process(    COMMAND ${CMAKE_COMMAND} .    WORKING_DIRECTORY ${_repo_build_dir}    RESULT_VARIABLE _result_code    ERROR_VARIABLE _err_msg    )  if(_result_code)    message(FATAL_ERROR "Configuring directory ${_repo_build_dir} failed: ${_err_msg}")  endif()    execute_process(    COMMAND ${CMAKE_COMMAND} --build ${_repo_build_dir}    RESULT_VARIABLE _result_code    ERROR_VARIABLE _err_msg    )  if(_result_code)    message(FATAL_ERROR "Building directory ${_repo_build_dir} failed: ${_err_msg}")  endif()    set(${_NAME}_DIR ${_CHECKOUT_DIR}/${_NAME} PARENT_SCOPE)endfunction()
 |