Skip to content

Commit 99aa2e4

Browse files
committed
Use dedicated function for version parsing
1 parent 985ae38 commit 99aa2e4

1 file changed

Lines changed: 48 additions & 26 deletions

File tree

CMakeLists.txt

Lines changed: 48 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,51 @@ set(PACKAGE_PROJECT_ROOT_PATH
55
CACHE INTERNAL "The path to the PackageProject directory"
66
)
77

8+
function(_package_project_parse_version VERSION MAJOR_VAR MINOR_VAR PATCH_VAR TWEAK_VAR)
9+
# clear previous matches
10+
unset(CMAKE_MATCH_1)
11+
unset(CMAKE_MATCH_3)
12+
unset(CMAKE_MATCH_5)
13+
unset(CMAKE_MATCH_7)
14+
15+
string(REGEX MATCH "^([0-9]+)(\\.([0-9]+))?(\\.([0-9]+))?(\\.([0-9]+))?$" _ "${VERSION}")
16+
17+
set(MAJOR ${CMAKE_MATCH_1})
18+
set(MINOR ${CMAKE_MATCH_3})
19+
set(PATCH ${CMAKE_MATCH_5})
20+
set(TWEAK ${CMAKE_MATCH_7})
21+
22+
if(NOT DEFINED MAJOR)
23+
set(MAJOR "0")
24+
endif()
25+
if(NOT DEFINED MINOR)
26+
set(MINOR "0")
27+
endif()
28+
if(NOT DEFINED PATCH)
29+
set(PATCH "0")
30+
endif()
31+
if(NOT DEFINED TWEAK)
32+
set(TWEAK "0")
33+
endif()
34+
35+
set(${MAJOR_VAR}
36+
"${MAJOR}"
37+
PARENT_SCOPE
38+
)
39+
set(${MINOR_VAR}
40+
"${MINOR}"
41+
PARENT_SCOPE
42+
)
43+
set(${PATCH_VAR}
44+
"${PATCH}"
45+
PARENT_SCOPE
46+
)
47+
set(${TWEAK_VAR}
48+
"${TWEAK}"
49+
PARENT_SCOPE
50+
)
51+
endfunction()
52+
853
function(packageProject)
954
include(CMakePackageConfigHelpers)
1055
include(GNUInstallDirs)
@@ -56,34 +101,11 @@ function(packageProject)
56101
endif()
57102

58103
if(DEFINED PROJECT_VERSION_HEADER)
59-
# clear previous matches
60-
unset(CMAKE_MATCH_1)
61-
unset(CMAKE_MATCH_3)
62-
unset(CMAKE_MATCH_5)
63-
unset(CMAKE_MATCH_7)
64-
65-
string(REGEX MATCH "^([0-9]+)(\\.([0-9]+))?(\\.([0-9]+))?(\\.([0-9]+))?$" _
66-
"${PROJECT_VERSION}"
104+
_package_project_parse_version(
105+
"${PROJECT_VERSION}" PROJECT_VERSION_MAJOR PROJECT_VERSION_MINOR PROJECT_VERSION_PATCH
106+
PROJECT_VERSION_TWEAK
67107
)
68108

69-
set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1})
70-
set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_3})
71-
set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_5})
72-
set(PROJECT_VERSION_TWEAK ${CMAKE_MATCH_7})
73-
74-
if(NOT DEFINED PROJECT_VERSION_MAJOR)
75-
set(PROJECT_VERSION_MAJOR "0")
76-
endif()
77-
if(NOT DEFINED PROJECT_VERSION_MINOR)
78-
set(PROJECT_VERSION_MINOR "0")
79-
endif()
80-
if(NOT DEFINED PROJECT_VERSION_PATCH)
81-
set(PROJECT_VERSION_PATCH "0")
82-
endif()
83-
if(NOT DEFINED PROJECT_VERSION_TWEAK)
84-
set(PROJECT_VERSION_TWEAK "0")
85-
endif()
86-
87109
string(TOUPPER ${PROJECT_NAME} UPPERCASE_PROJECT_NAME)
88110
# ensure that the generated macro does not include invalid characters
89111
string(REGEX REPLACE [^a-zA-Z0-9] _ UPPERCASE_PROJECT_NAME ${UPPERCASE_PROJECT_NAME})

0 commit comments

Comments
 (0)