# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. #.rst: # FindGit # ------- # # The module defines the following variables: # # ``GIT_EXECUTABLE`` # Path to Git command-line client. # ``Git_FOUND``, ``GIT_FOUND`` # True if the Git command-line client was found. # ``GIT_VERSION_STRING`` # The version of Git found. # # Example usage: # # .. code-block:: cmake # # find_package(Git) # if(Git_FOUND) # message("Git found: ${GIT_EXECUTABLE}") # endif() # Look for 'git' or 'eg' (easy git) # set(git_names git eg) # Prefer .cmd variants on Windows unless running in a Makefile # in the MSYS shell. # if(WIN32) if(NOT CMAKE_GENERATOR MATCHES "MSYS") set(git_names git.cmd git eg.cmd eg) # GitHub search path for Windows file(GLOB github_path "$ENV{LOCALAPPDATA}/Github/PortableGit*/cmd" "$ENV{LOCALAPPDATA}/Github/PortableGit*/bin" ) # SourceTree search path for Windows set(_git_sourcetree_path "$ENV{LOCALAPPDATA}/Atlassian/SourceTree/git_local/bin") endif() endif() find_program(GIT_EXECUTABLE NAMES ${git_names} PATHS ${github_path} ${_git_sourcetree_path} PATH_SUFFIXES Git/cmd Git/bin DOC "Git command line client" ) mark_as_advanced(GIT_EXECUTABLE) unset(git_names) unset(_git_sourcetree_path) if(GIT_EXECUTABLE) execute_process(COMMAND ${GIT_EXECUTABLE} --version OUTPUT_VARIABLE git_version ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if (git_version MATCHES "^git version [0-9]") string(REPLACE "git version " "" GIT_VERSION_STRING "${git_version}") endif() unset(git_version) endif() include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) find_package_handle_standard_args(Git REQUIRED_VARS GIT_EXECUTABLE VERSION_VAR GIT_VERSION_STRING)