Fixed OpenCV_LIBS when find_package has been used with explicit components.
authorRoman Donchenko <roman.donchenko@itseez.com>
Tue, 19 Nov 2013 14:36:58 +0000 (18:36 +0400)
committerRoman Donchenko <roman.donchenko@itseez.com>
Tue, 19 Nov 2013 14:44:17 +0000 (18:44 +0400)
Fixes <http://answers.opencv.org/question/23997/opencv-247-cmake-includes-all-modules-even-if-i/>.

cmake/templates/OpenCVConfig.cmake.in

index 91791b6..6db61d2 100644 (file)
@@ -181,6 +181,10 @@ foreach(__cvcomponent ${OpenCV_FIND_COMPONENTS})
     set(${__cvcomponent}_FOUND "${__cvcomponent}_FOUND-NOTFOUND")
   else()
     list(APPEND OpenCV_FIND_COMPONENTS_ ${__cvcomponent})
+    # Not using list(APPEND) here, because OpenCV_LIBS may not exist yet.
+    # Also not clearing OpenCV_LIBS anywhere, so that multiple calls
+    # to find_package(OpenCV) with different component lists add up.
+    set(OpenCV_LIBS ${OpenCV_LIBS} "${__cvcomponent}")
     #indicate that module is found
     string(TOUPPER "${__cvcomponent}" __cvcomponent)
     set(${__cvcomponent}_FOUND 1)
@@ -197,8 +201,6 @@ else()
   set(OpenCV_LIB_SUFFIX "")
 endif()
 
-SET(OpenCV_LIBS "${OpenCV_LIB_COMPONENTS}")
-
 foreach(__opttype OPT DBG)
   SET(OpenCV_LIBS_${__opttype} "${OpenCV_LIBS}")
   SET(OpenCV_EXTRA_LIBS_${__opttype} "")