41 lines
1.5 KiB
CMake
41 lines
1.5 KiB
CMake
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/version VERSION_CONTENTS)
|
|
|
|
string(REGEX MATCH "major: *([0-9]+)" MAJOR_MATCH ${VERSION_CONTENTS})
|
|
set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1})
|
|
string(REGEX MATCH "minor: *([0-9]+)" MINOR_MATCH ${VERSION_CONTENTS})
|
|
set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_1})
|
|
string(REGEX MATCH "build: *([0-9]+)" BUILD_MATCH ${VERSION_CONTENTS})
|
|
set(PROJECT_VERSION_BUILD ${CMAKE_MATCH_1})
|
|
set(PROJECT_VERSION_STR "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_BUILD}")
|
|
|
|
find_package(Git QUIET)
|
|
if(GIT_FOUND)
|
|
# Get short commit hash
|
|
execute_process(
|
|
COMMAND git rev-parse --short=8 HEAD
|
|
OUTPUT_VARIABLE PROJECT_VERSION_COMMIT
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_STRIP_TRAILING_WHITESPACE
|
|
ERROR_VARIABLE stderr
|
|
RESULT_VARIABLE return_code
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
|
)
|
|
if(return_code)
|
|
message(STATUS "git rev-parse failed: ${stderr}")
|
|
elseif(NOT "${stderr}" STREQUAL "")
|
|
message(STATUS "git rev-parse warned: ${stderr}")
|
|
endif()
|
|
endif()
|
|
|
|
if (NOT DEFINED PROJECT_VERSION_COMMIT)
|
|
set(PROJECT_VERSION_COMMIT "unknown")
|
|
endif()
|
|
|
|
configure_file(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/version.h.in
|
|
${CMAKE_BINARY_DIR}/generated/include/project_version.h
|
|
@ONLY
|
|
)
|
|
|
|
include_directories(${CMAKE_BINARY_DIR}/generated/include)
|