|
1 | 1 | cmake_minimum_required (VERSION 3.12)
|
2 | 2 |
|
| 3 | +function(get_versions versionstring VERSION_MAJOR VERSION_MINOR VERSION_PATCH) |
| 4 | + string(REGEX REPLACE "^([vV])([0-9]*)([.][0-9]*[.][0-9]*-?.*)$" "\\2" numbers ${versionstring} ) |
| 5 | + set(VERSION_MAJOR ${numbers} PARENT_SCOPE) |
| 6 | + string(REGEX REPLACE "^([vV][0-9]*[.])([0-9]*)([.][0-9]*-?.*)$" "\\2" numbers ${versionstring} ) |
| 7 | + set(VERSION_MINOR ${numbers} PARENT_SCOPE) |
| 8 | + string(REGEX REPLACE "^([vV][0-9]*[.][0-9]*[.])([0-9]*)(-?.*)$" "\\2" numbers ${versionstring} ) |
| 9 | + set(VERSION_PATCH ${numbers} PARENT_SCOPE) |
| 10 | +endfunction() |
| 11 | + |
| 12 | +if(NOT EXISTS "${CMAKE_SOURCE_DIR}/version.txt") |
| 13 | + message(FATAL_ERROR "version.txt file does not exist") |
| 14 | +endif() |
| 15 | + |
| 16 | +file(STRINGS "version.txt" VERSION_STRING) |
| 17 | + |
| 18 | +if(NOT ${VERSION_STRING} MATCHES "^[vV][0-9]*[.][0-9]*[.][0-9]*$") |
| 19 | + message(FATAL_ERROR "Version string taken from version.txt doesn't match required format v[VERSION_MAJOR].[VERSION_MINOR].[VERSION_PATCH]") |
| 20 | +endif() |
| 21 | + |
| 22 | +get_versions(${VERSION_STRING} VERSION_MAJOR VERSION_MINOR VERSION_PATCH) |
| 23 | +if(VERSION_MAJOR STREQUAL ${VERSION_STRING}) |
| 24 | + message(FATAL_ERROR "Version string parsing error") |
| 25 | +endif() |
| 26 | +message("XEVE VERSION=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") |
| 27 | + |
3 | 28 | # Check input arguments.
|
4 | 29 | if(NOT SET_PROF)
|
5 | 30 | set(SET_PROF "MAIN")
|
@@ -28,7 +53,7 @@ cmake_policy(SET CMP0048 NEW)
|
28 | 53 | set(CMAKE_C_STANDARD 99)
|
29 | 54 |
|
30 | 55 | # Maps to a solution file (XEVE.sln).
|
31 |
| -project (XEVE VERSION 1.0.0) |
| 56 | +project (XEVE VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) |
32 | 57 | set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
33 | 58 |
|
34 | 59 | # Set compiler flags and options.
|
|
0 commit comments