29 lines
1 KiB
CMake
29 lines
1 KiB
CMake
find_package(Git)
|
|
if(GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} describe --long --always
|
|
RESULT_VARIABLE res_var
|
|
OUTPUT_VARIABLE GIT_COM_ID
|
|
)
|
|
if( NOT ${res_var} EQUAL 0 )
|
|
set( GIT_COMMIT_ID "git commit id unknown")
|
|
message( WARNING "Git failed (not a repo, or no tags). Build will not contain git revision info." )
|
|
endif()
|
|
string( REPLACE "\n" "" GIT_COMMIT_ID "${GIT_COM_ID}" )
|
|
else()
|
|
set( GIT_COMMIT_ID "unknown (git not found!)")
|
|
message( WARNING "Git not found. Build will not contain git revision info." )
|
|
endif()
|
|
|
|
set( hstring "extern const char *VERSION_STRING\;\n" )
|
|
set( cppstring "const char * VERSION_STRING = \"${GIT_COMMIT_ID}\"\;\n")
|
|
|
|
file(WRITE version_string.cpp.txt ${cppstring} )
|
|
file(WRITE version_string.h.txt ${hstring} )
|
|
|
|
execute_process(
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different version_string.h.txt ${CMAKE_CURRENT_BINARY_DIR}/version_string.h
|
|
)
|
|
execute_process(
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different version_string.cpp.txt ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp
|
|
)
|