# (c) https://github.com/dev-cafe/autocmake/blob/master/AUTHORS.md # licensed under BSD-3: https://github.com/dev-cafe/autocmake/blob/master/LICENSE #.rst: # # Creates git_info.h in the build directory. # This file can be included in sources to print # Git repository version and status information # to the program output. # # autocmake.yml configuration:: # # url_root: https://github.com/dev-cafe/autocmake/raw/master/ # fetch: # - "%(url_root)modules/git_info/git_info.h.in" get_filename_component(_current_dir ${CMAKE_CURRENT_LIST_FILE} PATH) function(generate_git_info_header _header_location _header_name) # _header_location: where the Git info header file should be generated # _header_name: the Git info header name, complete with extension (.h, .hpp, .hxx or whatever) find_package(Git) set(_git_last_commit_hash "unknown") set(_git_last_commit_author "unknown") set(_git_last_commit_date "unknown") set(_git_branch "unknown") if(GIT_FOUND) execute_process( COMMAND ${GIT_EXECUTABLE} --no-pager show -s --pretty=format:%h -n 1 OUTPUT_VARIABLE _git_last_commit_hash OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) execute_process( COMMAND ${GIT_EXECUTABLE} --no-pager show -s --pretty=format:%aN -n 1 OUTPUT_VARIABLE _git_last_commit_author OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) execute_process( COMMAND ${GIT_EXECUTABLE} --no-pager show -s --pretty=format:%ad -n 1 OUTPUT_VARIABLE _git_last_commit_date OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD OUTPUT_VARIABLE _git_branch OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) endif() configure_file( ${_current_dir}/git_info.h.in ${_header_location}/${_header_name} @ONLY ) unset(_git_last_commit_hash) unset(_git_last_commit_author) unset(_git_last_commit_date) unset(_git_branch) add_custom_target( git_info ALL DEPENDS ${_header_location}/${_header_name} ) endfunction()