This mode is for packages which consider themselves only compatible if exactly the same version is requested. The tweak version is ignored. Alex
43 lines
1.6 KiB
CMake
43 lines
1.6 KiB
CMake
# This is a basic version file for the Config-mode of find_package().
|
|
# It is used by write_basic_package_version_file() as input file for configure_file()
|
|
# to create a version-file which can be installed along a config.cmake file.
|
|
#
|
|
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
|
|
# the requested version string are exactly the same and it sets
|
|
# PACKAGE_VERSION_COMPATIBLE if the current version is equal to the requested version.
|
|
# The tweak version component is ignored.
|
|
# The variable CVF_VERSION must be set before calling configure_file().
|
|
|
|
|
|
set(PACKAGE_VERSION "@CVF_VERSION@")
|
|
|
|
if("@CVF_VERSION@" MATCHES "^([0-9]+\\.[0-9]+\\.[0-9]+)\\..*") # strip the tweak version
|
|
set(CVF_VERSION_NO_TWEAK "${CMAKE_MATCH_1}")
|
|
else()
|
|
set(CVF_VERSION_NO_TWEAK "@CVF_VERSION@")
|
|
endif()
|
|
|
|
if("${PACKAGE_FIND_VERSION}" MATCHES "^([0-9]+\\.[0-9]+\\.[0-9]+)\\..*") # strip the tweak version
|
|
set(REQUESTED_VERSION_NO_TWEAK "${CMAKE_MATCH_1}")
|
|
else()
|
|
set(REQUESTED_VERSION_NO_TWEAK "${PACKAGE_FIND_VERSION}")
|
|
endif()
|
|
|
|
if("${REQUESTED_VERSION_NO_TWEAK}" STREQUAL "${CVF_VERSION_NO_TWEAK}")
|
|
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
|
else()
|
|
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
|
endif()
|
|
|
|
if( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
|
|
set(PACKAGE_VERSION_EXACT TRUE)
|
|
endif()
|
|
|
|
|
|
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
|
|
if(NOT "${CMAKE_SIZEOF_VOID_P}" STREQUAL "@CMAKE_SIZEOF_VOID_P@")
|
|
math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
|
|
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
|
|
set(PACKAGE_VERSION_UNSUITABLE TRUE)
|
|
endif()
|