Properly check for version in find_package
authorVincent Rabaud <vincent.rabaud@gmail.com>
Sun, 6 Dec 2015 23:10:39 +0000 (00:10 +0100)
committerMaksim Shabunin <maksim.shabunin@itseez.com>
Thu, 17 Dec 2015 14:00:30 +0000 (17:00 +0300)
If I ask for version 2, the current trunk version (version 3), will say it is compatible, which is erroneous.

Do not consider different major versions compatible in cmake config file

cmake/templates/OpenCVConfig-version.cmake.in
cmake/templates/OpenCVConfig.cmake.in

index b5ac5f8..829cf9d 100644 (file)
@@ -9,6 +9,7 @@ if(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
   set(PACKAGE_VERSION_COMPATIBLE True)
 endif()
 
-if(PACKAGE_FIND_VERSION VERSION_LESS PACKAGE_VERSION)
+if(PACKAGE_FIND_VERSION_MAJOR EQUAL @OPENCV_VERSION_MAJOR@
+   AND PACKAGE_FIND_VERSION VERSION_LESS PACKAGE_VERSION)
   set(PACKAGE_VERSION_COMPATIBLE True)
 endif()
index 80ffbaf..7d56ca5 100644 (file)
@@ -110,6 +110,7 @@ set(OpenCV_SHARED @BUILD_SHARED_LIBS@)
 set(OpenCV_USE_MANGLED_PATHS @OpenCV_USE_MANGLED_PATHS_CONFIGCMAKE@)
 
 # Extract the directory where *this* file has been installed (determined at cmake run-time)
+unset(OpenCV_CONFIG_PATH CACHE)
 get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" PATH CACHE)
 
 if(NOT WIN32 OR ANDROID)