1 # This is a basic version file for the Config-mode of find_package(). 2 # It is used by write_basic_package_version_file() as input file for configure_file() 3 # to create a version-file which can be installed along a config.cmake file. 5 # The created file sets PACKAGE_VERSION_EXACT if the current version string and 6 # the requested version string are exactly the same and it sets 7 # PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version, 8 # but only if the requested major version is the same as the current one. 9 # The variable CVF_VERSION must be set before calling configure_file(). 15 set(PACKAGE_VERSION_COMPATIBLE FALSE)
18 if(
"2.0" MATCHES
"^([0-9]+)\\.")
19 set(CVF_VERSION_MAJOR
"${CMAKE_MATCH_1}")
21 set(CVF_VERSION_MAJOR
"2.0")
24 if(PACKAGE_FIND_VERSION_RANGE)
25 # both endpoints of the range must have the expected major version 26 math (EXPR CVF_VERSION_MAJOR_NEXT
"${CVF_VERSION_MAJOR} + 1")
27 if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
28 OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL
"INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
29 OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL
"EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
30 set(PACKAGE_VERSION_COMPATIBLE FALSE)
31 elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
32 AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL
"INCLUDE" AND
PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
33 OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL
"EXCLUDE" AND
PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
34 set(PACKAGE_VERSION_COMPATIBLE TRUE)
36 set(PACKAGE_VERSION_COMPATIBLE FALSE)
39 if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
40 set(PACKAGE_VERSION_COMPATIBLE TRUE)
42 set(PACKAGE_VERSION_COMPATIBLE FALSE)
46 set(PACKAGE_VERSION_EXACT TRUE)
52 # if the installed project requested no architecture check, don't perform the check 57 # if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: 58 if(
"${CMAKE_SIZEOF_VOID_P}" STREQUAL
"" OR
"8" STREQUAL
"")
62 # check that the installed version has the same 32/64bit-ness as the one which is currently searching: 63 if(NOT CMAKE_SIZEOF_VOID_P STREQUAL
"8")
64 math(EXPR installedBits
"8 * 8")
65 set(PACKAGE_VERSION
"${PACKAGE_VERSION} (${installedBits}bit)")
66 set(PACKAGE_VERSION_UNSUITABLE TRUE)