@@ -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+
853function (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