31 lines
1.2 KiB
CMake
31 lines
1.2 KiB
CMake
# read file cmake/etc/version.txt and set global properties
|
|
# VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_INT and VERSION_STR
|
|
|
|
function(set_project_version)
|
|
set(_version_file "${CMAKE_SOURCE_DIR}/cmake/etc/version.txt")
|
|
if(NOT EXISTS "${_version_file}")
|
|
message(FATAL_ERROR "File ${_version_file} doesn't exists")
|
|
endif()
|
|
file(READ "${_version_file}" _version)
|
|
set_property(DIRECTORY
|
|
APPEND
|
|
PROPERTY CMAKE_CONFIGURE_DEPENDS ${_version_file})
|
|
|
|
if(NOT "${_version}" MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)\n")
|
|
message(FATAL_ERROR "${_version_file} has wrong format")
|
|
endif()
|
|
|
|
string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)\n" _ ${_version})
|
|
|
|
set_property(GLOBAL PROPERTY VERSION_MAJOR ${CMAKE_MATCH_1})
|
|
set_property(GLOBAL PROPERTY VERSION_MINOR ${CMAKE_MATCH_2})
|
|
set_property(GLOBAL PROPERTY VERSION_PATCH ${CMAKE_MATCH_3})
|
|
math(EXPR _version_int
|
|
"(${CMAKE_MATCH_1} << 16) + (${CMAKE_MATCH_2} << 8) + ${CMAKE_MATCH_3}")
|
|
set_property(GLOBAL PROPERTY VERSION_INT ${_version_int})
|
|
set_property(GLOBAL
|
|
PROPERTY VERSION_STR
|
|
"${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}")
|
|
endfunction()
|
|
|