From 9941d3f71a9aabee255d7091c4474dc70daec989 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Tue, 15 Oct 2013 23:05:40 +0400 Subject: [PATCH] cmake: restore find_package() for build directory --- cmake/OpenCVGenConfig.cmake | 3 ++- cmake/OpenCVUtils.cmake | 22 ++++++++++++++++++++++ cmake/templates/OpenCVConfig.cmake.in | 3 ++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/cmake/OpenCVGenConfig.cmake b/cmake/OpenCVGenConfig.cmake index 9050e05..881cd37 100644 --- a/cmake/OpenCVGenConfig.cmake +++ b/cmake/OpenCVGenConfig.cmake @@ -74,11 +74,12 @@ if(ANDROID AND NOT BUILD_SHARED_LIBS AND HAVE_TBB) list(APPEND OpenCV2_INCLUDE_DIRS_CONFIGCMAKE ${TBB_INCLUDE_DIRS}) endif() +export(TARGETS ${OpenCVModules_TARGETS} FILE "${CMAKE_BINARY_DIR}/OpenCVModules.cmake") + configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig.cmake" IMMEDIATE @ONLY) #support for version checking when finding opencv. find_package(OpenCV 2.3.1 EXACT) should now work. configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig-version.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig-version.cmake" IMMEDIATE @ONLY) - # -------------------------------------------------------------------------------------------- # Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use *with* "make install" # ------------------------------------------------------------------------------------------- diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake index 2fb8335..22aa00a 100644 --- a/cmake/OpenCVUtils.cmake +++ b/cmake/OpenCVUtils.cmake @@ -440,6 +440,28 @@ endmacro() function(ocv_install_target) install(TARGETS ${ARGN}) + set(isPackage 0) + unset(__package) + unset(__target) + foreach(e ${ARGN}) + if(NOT DEFINED __target) + set(__target "${e}") + endif() + if(isPackage EQUAL 1) + set(__package "${e}") + break() + endif() + if(e STREQUAL "EXPORT") + set(isPackage 1) + endif() + endforeach() + + if(DEFINED __package) + list(APPEND ${__package}_TARGETS ${__target}) + list(REMOVE_DUPLICATES ${__package}_TARGETS) + set(${__package}_TARGETS "${${__package}_TARGETS}" CACHE INTERNAL "List of ${__package} targets") + endif() + if(INSTALL_CREATE_DISTRIB) if(MSVC AND NOT BUILD_SHARED_LIBS) set(__target "${ARGV0}") diff --git a/cmake/templates/OpenCVConfig.cmake.in b/cmake/templates/OpenCVConfig.cmake.in index 2a4d6f4..88a451b 100644 --- a/cmake/templates/OpenCVConfig.cmake.in +++ b/cmake/templates/OpenCVConfig.cmake.in @@ -289,9 +289,10 @@ endmacro() # adds include directories in such way that directories from the OpenCV source tree go first function(ocv_include_directories) set(__add_before "") + file(TO_CMAKE_PATH "${OpenCV_DIR}" __baseDir) foreach(dir ${ARGN}) get_filename_component(__abs_dir "${dir}" ABSOLUTE) - if("${__abs_dir}" MATCHES "^${OpenCV_DIR}") + if("${__abs_dir}" MATCHES "^${__baseDir}") list(APPEND __add_before "${dir}") else() include_directories(AFTER SYSTEM "${dir}") -- 2.7.4