Get version from Git

master
Unknown 2018-05-06 09:44:08 +02:00
parent 683f4e9abc
commit 6f4445a596
2 changed files with 38 additions and 3 deletions

View File

@ -10,11 +10,46 @@ set (CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
#include ("GetVersionFromGitTag")
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
project (
"Minetestmapper"
VERSION 0.1.0
"Minetestmapper"
DESCRIPTION "Map generator for Minetest"
LANGUAGES C CXX)
find_package(Git REQUIRED)
execute_process(
COMMAND "${GIT_EXECUTABLE}" describe --long --dirty=-WIP --tags
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE git_result
OUTPUT_VARIABLE git_tag
ERROR_VARIABLE git_error
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
if( NOT git_result EQUAL 0 )
message( FATAL_ERROR "Failed to execute Git: ${git_error}" )
endif()
if( git_tag MATCHES "([0-9]+).([0-9]+).([0-9]+)-?([0-9]+)?-g([0-9,a-f]+)" )
set( git_version_major "${CMAKE_MATCH_1}" )
set( git_version_minor "${CMAKE_MATCH_2}" )
set( git_version_patch "${CMAKE_MATCH_3}" )
set( git_commits_since_last_tag "${CMAKE_MATCH_4}" )
set( git_hash "${CMAKE_MATCH_5}" )
else()
message( FATAL_ERROR "Git tag isn't valid semantic version: [${git_tag}]" )
endif()
set (PROJECT_VERSION_MAJOR ${git_version_major})
set (PROJECT_VERSION_MINOR ${git_version_minor})
set (PROJECT_VERSION_PATCH ${git_version_patch})
set (PROJECT_VERSION_TWEAK ${git_commits_since_last_tag})
if(NOT PROJECT_VERSION_TWEAK)
set(PROJECT_VERSION_TWEAK 0)
endif()
set (PROJECT_VERSION "${git_version_major}.${git_version_minor}.${git_version_patch}.${git_commits_since_last_tag}-g${git_hash}")
message(STATUS "Version: ${PROJECT_VERSION}")
# Set output directories
#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})

View File

@ -11,7 +11,7 @@
#define PROJECT_VERSION_TWEAK @PROJECT_VERSION_TWEAK@
#define VER_FILEVERSION @PROJECT_VERSION_MAJOR@, @PROJECT_VERSION_MINOR@, @PROJECT_VERSION_PATCH@, @PROJECT_VERSION_TWEAK@
#define VER_FILEVERSION_STR "@PROJECT_VERSION_MAJOR@. @PROJECT_VERSION_MINOR@. @PROJECT_VERSION_PATCH@"
#define VER_FILEVERSION_STR "@PROJECT_VERSION@"
#define VER_PRODUCTVERSION VER_FILEVERSION