Use only Git commands in git_info
This commit is contained in:
@ -5,22 +5,66 @@
|
||||
# Git repository version and status information
|
||||
# to the program output.
|
||||
#
|
||||
# autocmake.cfg configuration::
|
||||
# autocmake.yml configuration::
|
||||
#
|
||||
# fetch: https://github.com/scisoft/autocmake/raw/master/modules/git_info/git_info_sub.cmake
|
||||
# https://github.com/scisoft/autocmake/raw/master/modules/git_info/git_info.h.in
|
||||
# url_root: https://github.com/coderefinery/autocmake/raw/master/
|
||||
# fetch:
|
||||
# - "%(url_root)modules/git_info/git_info_sub.cmake"
|
||||
# - "%(url_root)modules/git_info/git_info.h.in"
|
||||
|
||||
# CMAKE_CURRENT_LIST_DIR is undefined in CMake 2.8.2
|
||||
# see https://public.kitware.com/Bug/print_bug_page.php?bug_id=11675
|
||||
# workaround: create CMAKE_CURRENT_LIST_DIR
|
||||
get_filename_component(CMAKE_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
|
||||
add_custom_command(
|
||||
OUTPUT ${PROJECT_BINARY_DIR}/git_info.h
|
||||
COMMAND ${CMAKE_COMMAND} -D_target_dir=${PROJECT_BINARY_DIR} -P git_info_sub.cmake
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||
# _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)
|
||||
function(generate_git_info_header _header_location _header_name)
|
||||
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(
|
||||
${PROJECT_SOURCE_DIR}/cmake/downloaded/git_info.h.in
|
||||
${_header_location}/${_header_name}
|
||||
@ONLY
|
||||
)
|
||||
|
||||
add_custom_target(
|
||||
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 ${PROJECT_BINARY_DIR}/git_info.h
|
||||
ALL DEPENDS ${_header_location}/${_header_name}
|
||||
)
|
||||
endfunction()
|
||||
|
Reference in New Issue
Block a user