File tree Expand file tree Collapse file tree
namespaced_dependency/source Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -49,6 +49,34 @@ function(packageProject)
4949 endif ()
5050
5151 if (DEFINED PROJECT_VERSION_HEADER)
52+ # clear previous matches
53+ unset (CMAKE_MATCH_1)
54+ unset (CMAKE_MATCH_3)
55+ unset (CMAKE_MATCH_5)
56+ unset (CMAKE_MATCH_7)
57+
58+ string (REGEX MATCH "^([0-9]+)(\\ .([0-9]+))?(\\ .([0-9]+))?(\\ .([0-9]+))?$" _
59+ "${PROJECT_VERSION} "
60+ )
61+
62+ set (PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1} )
63+ set (PROJECT_VERSION_MINOR ${CMAKE_MATCH_3} )
64+ set (PROJECT_VERSION_PATCH ${CMAKE_MATCH_5} )
65+ set (PROJECT_VERSION_TWEAK ${CMAKE_MATCH_7} )
66+
67+ if (NOT DEFINED PROJECT_VERSION_MAJOR )
68+ set (PROJECT_VERSION_MAJOR "0" )
69+ endif ()
70+ if (NOT DEFINED PROJECT_VERSION_MINOR )
71+ set (PROJECT_VERSION_MINOR "0" )
72+ endif ()
73+ if (NOT DEFINED PROJECT_VERSION_PATCH )
74+ set (PROJECT_VERSION_PATCH "0" )
75+ endif ()
76+ if (NOT DEFINED PROJECT_VERSION_TWEAK )
77+ set (PROJECT_VERSION_TWEAK "0" )
78+ endif ()
79+
5280 string (TOUPPER ${PROJECT_NAME} UPPERCASE_PROJECT_NAME)
5381 configure_file (
5482 ${PACKAGE_PROJECT_ROOT_PATH} /version.h.in
Original file line number Diff line number Diff line change 99)
1010
1111if (TEST_INSTALLED_VERSION)
12- find_package (dependency 1.2.3 REQUIRED )
12+ find_package (dependency 1.2 REQUIRED )
1313 find_package (namespaced_dependency 4.5.6 REQUIRED )
1414 find_package (transitive_dependency 7.8.9 REQUIRED )
1515else ()
Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.14)
22
33project (
44 dependency
5- VERSION 1.2.3
5+ VERSION 1.2
66 LANGUAGES CXX
77)
88
Original file line number Diff line number Diff line change 44
55void dependencyFunction () {
66 std::cout << " Using dependency version " << DEPENDENCY_VERSION << std::endl;
7+ std::cout << " Dependency version major: " << DEPENDENCY_VERSION_MAJOR << std::endl;
8+ std::cout << " Dependency version minor: " << DEPENDENCY_VERSION_MINOR << std::endl;
9+ std::cout << " Dependency version patch: " << DEPENDENCY_VERSION_PATCH << std::endl;
10+ std::cout << " Dependency version build: " << DEPENDENCY_VERSION_TWEAK << std::endl;
711}
Original file line number Diff line number Diff line change @@ -12,8 +12,20 @@ int main() {
1212 ns::namespacedDependencyFunction ();
1313 transitiveDependencyFunction ();
1414 auto result = true ;
15- result &= DEPENDENCY_VERSION == std::string (" 1.2.3" );
15+ result &= DEPENDENCY_VERSION == std::string (" 1.2" );
16+ result &= DEPENDENCY_VERSION_MAJOR == 1 ;
17+ result &= DEPENDENCY_VERSION_MINOR == 2 ;
18+ result &= DEPENDENCY_VERSION_PATCH == 0 ;
19+ result &= DEPENDENCY_VERSION_TWEAK == 0 ;
1620 result &= NAMESPACED_DEPENDENCY_VERSION == std::string (" 4.5.6" );
17- result &= TRANSITIVE_DEPENDENCY_VERSION == std::string (" 7.8.9" );
21+ result &= NAMESPACED_DEPENDENCY_VERSION_MAJOR == 4 ;
22+ result &= NAMESPACED_DEPENDENCY_VERSION_MINOR == 5 ;
23+ result &= NAMESPACED_DEPENDENCY_VERSION_PATCH == 6 ;
24+ result &= NAMESPACED_DEPENDENCY_VERSION_TWEAK == 0 ;
25+ result &= TRANSITIVE_DEPENDENCY_VERSION == std::string (" 7.8.9.21948124" );
26+ result &= TRANSITIVE_DEPENDENCY_VERSION_MAJOR == 7 ;
27+ result &= TRANSITIVE_DEPENDENCY_VERSION_MINOR == 8 ;
28+ result &= TRANSITIVE_DEPENDENCY_VERSION_PATCH == 9 ;
29+ result &= TRANSITIVE_DEPENDENCY_VERSION_TWEAK == 21948124 ;
1830 return result ? 0 : 1 ;
1931}
Original file line number Diff line number Diff line change @@ -6,5 +6,10 @@ namespace ns {
66 void namespacedDependencyFunction () {
77 std::cout << " Using namespaced_dependency version " << NAMESPACED_DEPENDENCY_VERSION
88 << std::endl;
9+
10+ std::cout << " Dependency version major: " << NAMESPACED_DEPENDENCY_VERSION_MAJOR << std::endl;
11+ std::cout << " Dependency version minor: " << NAMESPACED_DEPENDENCY_VERSION_MINOR << std::endl;
12+ std::cout << " Dependency version patch: " << NAMESPACED_DEPENDENCY_VERSION_PATCH << std::endl;
13+ std::cout << " Dependency version build: " << NAMESPACED_DEPENDENCY_VERSION_TWEAK << std::endl;
914 }
1015} // namespace ns
Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.14)
22
33project (
44 transitive_dependency
5- VERSION 7.8.9
5+ VERSION 7.8.9.21948124
66 LANGUAGES CXX
77)
88
Original file line number Diff line number Diff line change 44
55void TRANSITIVE_DEPENDENCY_EXPORT transitiveDependencyFunction () {
66 fmt::print (" Using transitive_dependency version {}\n " , TRANSITIVE_DEPENDENCY_VERSION);
7+ fmt::print (" Dependency version major: {}\n " , TRANSITIVE_DEPENDENCY_VERSION_MAJOR);
8+ fmt::print (" Dependency version minor: {}\n " , TRANSITIVE_DEPENDENCY_VERSION_MINOR);
9+ fmt::print (" Dependency version patch: {}\n " , TRANSITIVE_DEPENDENCY_VERSION_PATCH);
10+ fmt::print (" Dependency version build: {}\n " , TRANSITIVE_DEPENDENCY_VERSION_TWEAK);
711}
Original file line number Diff line number Diff line change 11#pragma once
22
33#define @UPPERCASE_PROJECT_NAME @_VERSION "@PROJECT_VERSION@"
4+
5+ #define @UPPERCASE_PROJECT_NAME @_VERSION_MAJOR @PROJECT_VERSION_MAJOR@
6+ #define @UPPERCASE_PROJECT_NAME @_VERSION_MINOR @PROJECT_VERSION_MINOR@
7+ #define @UPPERCASE_PROJECT_NAME @_VERSION_PATCH @PROJECT_VERSION_PATCH@
8+ #define @UPPERCASE_PROJECT_NAME @_VERSION_TWEAK @PROJECT_VERSION_TWEAK@
You can’t perform that action at this time.
0 commit comments