# ----------------------------------------------------------------------------- # # CMake module for paths generation in DEBUG and RELEASE modes # # (c) Copyright Löwenware Ltd. (https://lowenware.com/) # # ----------------------------------------------------------------------------- ## Constants set (VERSION_FILE "version") set ( VERSION_REGEX "^([0-9]+)\\.([0-9]+)\\.([0-9]+)(-(pre|alpha|beta|rc|release))?" ) # Read file file (READ ${VERSION_FILE} VERSION_STRING) # Match file content string(REGEX MATCH ${VERSION_REGEX} VERSION_STRING ${VERSION_STRING} ) # Set Version constants set (VERSION_MAJOR ${CMAKE_MATCH_1}) set (VERSION_MINOR ${CMAKE_MATCH_2}) set (VERSION_TWEAK ${CMAKE_MATCH_3}) if (CMAKE_MATCH_5 STREQUAL "pre") set(VERSION_CYCLE 1) elseif (CMAKE_MATCH_5 STREQUAL "alpha") set (VERSION_CYCLE 2) elseif (CMAKE_MATCH_5 STREQUAL "beta") set (VERSION_CYCLE 3) elseif (CMAKE_MATCH_5 STREQUAL "rc") set (VERSION_CYCLE 4) else() set (VERSION_CYCLE 0) endif() set (VERSION_LABEL ${CMAKE_MATCH_4}) # Add compiler macros add_definitions( -DVERSION_MAJOR=${VERSION_MAJOR} -DVERSION_MINOR=${VERSION_MINOR} -DVERSION_TWEAK=${VERSION_TWEAK} -DVERSION_CYCLE=${VERSION_CYCLE} -DVERSION_LABEL="${VERSION_LABEL}" ) #Print output MESSAGE( STATUS "${PROJECT_TITLE} version: " ${VERSION_MAJOR} "." ${VERSION_MINOR} "." ${VERSION_TWEAK} "-" ${VERSION_CYCLE_TEXT} " " ${VERSION_LABEL} )