mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
9.2 KiB
182 lines
9.2 KiB
# -------------------------------------------------------------------------------------------- |
|
# Installation for CMake Module: OpenCVConfig.cmake |
|
# Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake -> For use *without* "make install" |
|
# Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use with "make install" |
|
# Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages |
|
# ------------------------------------------------------------------------------------------- |
|
|
|
if(INSTALL_TO_MANGLED_PATHS) |
|
set(OpenCV_USE_MANGLED_PATHS_CONFIGCMAKE TRUE) |
|
else() |
|
set(OpenCV_USE_MANGLED_PATHS_CONFIGCMAKE FALSE) |
|
endif() |
|
|
|
if(NOT OpenCV_CUDA_CC) |
|
set(OpenCV_CUDA_CC_CONFIGCMAKE "\"\"") |
|
set(OpenCV_CUDA_VERSION "") |
|
else() |
|
set(OpenCV_CUDA_CC_CONFIGCMAKE "${OpenCV_CUDA_CC}") |
|
set(OpenCV_CUDA_VERSION ${CUDA_VERSION_STRING}) |
|
endif() |
|
|
|
if(NOT ANDROID_NATIVE_API_LEVEL) |
|
set(OpenCV_ANDROID_NATIVE_API_LEVEL_CONFIGCMAKE 0) |
|
else() |
|
set(OpenCV_ANDROID_NATIVE_API_LEVEL_CONFIGCMAKE "${ANDROID_NATIVE_API_LEVEL}") |
|
endif() |
|
|
|
if(CMAKE_GENERATOR MATCHES "Visual" OR CMAKE_GENERATOR MATCHES "Xcode") |
|
set(OpenCV_ADD_DEBUG_RELEASE_CONFIGCMAKE TRUE) |
|
else() |
|
set(OpenCV_ADD_DEBUG_RELEASE_CONFIGCMAKE FALSE) |
|
endif() |
|
|
|
|
|
|
|
if(WIN32) |
|
if(MINGW) |
|
set(OPENCV_LINK_LIBRARY_SUFFIX ".dll.a") |
|
else() |
|
set(OPENCV_LINK_LIBRARY_SUFFIX ".lib") |
|
endif() |
|
endif() |
|
|
|
#build list of modules available for the OpenCV user |
|
set(OpenCV_LIB_COMPONENTS "") |
|
foreach(m ${OPENCV_MODULES_PUBLIC}) |
|
list(INSERT OpenCV_LIB_COMPONENTS 0 ${${m}_MODULE_DEPS_OPT} ${m}) |
|
endforeach() |
|
ocv_list_unique(OpenCV_LIB_COMPONENTS) |
|
set(OPENCV_MODULES_CONFIGCMAKE ${OpenCV_LIB_COMPONENTS}) |
|
ocv_list_filterout(OpenCV_LIB_COMPONENTS "^opencv_") |
|
if(OpenCV_LIB_COMPONENTS) |
|
list(REMOVE_ITEM OPENCV_MODULES_CONFIGCMAKE ${OpenCV_LIB_COMPONENTS}) |
|
endif() |
|
|
|
if(BUILD_FAT_JAVA_LIB AND HAVE_opencv_java) |
|
list(APPEND OPENCV_MODULES_CONFIGCMAKE opencv_java) |
|
endif() |
|
|
|
macro(ocv_generate_dependencies_map_configcmake suffix configuration) |
|
set(OPENCV_DEPENDENCIES_MAP_${suffix} "") |
|
set(OPENCV_PROCESSED_LIBS "") |
|
set(OPENCV_LIBS_TO_PROCESS ${OPENCV_MODULES_CONFIGCMAKE}) |
|
while(OPENCV_LIBS_TO_PROCESS) |
|
list(GET OPENCV_LIBS_TO_PROCESS 0 __ocv_lib) |
|
get_target_property(__libname ${__ocv_lib} LOCATION_${configuration}) |
|
get_filename_component(__libname "${__libname}" NAME) |
|
|
|
if(WIN32) |
|
string(REGEX REPLACE "${CMAKE_SHARED_LIBRARY_SUFFIX}$" "${OPENCV_LINK_LIBRARY_SUFFIX}" __libname "${__libname}") |
|
endif() |
|
|
|
if (CUDA_FOUND AND WIN32) |
|
if(${__ocv_lib}_EXTRA_DEPS_${suffix}) |
|
list(REMOVE_ITEM ${__ocv_lib}_EXTRA_DEPS_${suffix} ${CUDA_LIBRARIES} ${CUDA_CUFFT_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES} ${CUDA_npp_LIBRARY} ${CUDA_nvcuvid_LIBRARY} ${CUDA_nvcuvenc_LIBRARY}) |
|
endif() |
|
endif() |
|
|
|
string(REPLACE " " "\\ " __mod_deps "${${__ocv_lib}_MODULE_DEPS_${suffix}}") |
|
string(REPLACE " " "\\ " __ext_deps "${${__ocv_lib}_EXTRA_DEPS_${suffix}}") |
|
string(REPLACE "\"" "\\\"" __mod_deps "${__mod_deps}") |
|
string(REPLACE "\"" "\\\"" __ext_deps "${__ext_deps}") |
|
|
|
|
|
set(OPENCV_DEPENDENCIES_MAP_${suffix} "${OPENCV_DEPENDENCIES_MAP_${suffix}}set(OpenCV_${__ocv_lib}_LIBNAME_${suffix} \"${__libname}\")\n") |
|
set(OPENCV_DEPENDENCIES_MAP_${suffix} "${OPENCV_DEPENDENCIES_MAP_${suffix}}set(OpenCV_${__ocv_lib}_DEPS_${suffix} ${__mod_deps})\n") |
|
set(OPENCV_DEPENDENCIES_MAP_${suffix} "${OPENCV_DEPENDENCIES_MAP_${suffix}}set(OpenCV_${__ocv_lib}_EXTRA_DEPS_${suffix} \"${__ext_deps}\")\n") |
|
|
|
list(APPEND OPENCV_PROCESSED_LIBS ${__ocv_lib}) |
|
list(APPEND OPENCV_LIBS_TO_PROCESS ${${__ocv_lib}_MODULE_DEPS_${suffix}}) |
|
list(REMOVE_ITEM OPENCV_LIBS_TO_PROCESS ${OPENCV_PROCESSED_LIBS}) |
|
endwhile() |
|
unset(OPENCV_PROCESSED_LIBS) |
|
unset(OPENCV_LIBS_TO_PROCESS) |
|
unset(__ocv_lib) |
|
unset(__libname) |
|
endmacro() |
|
|
|
ocv_generate_dependencies_map_configcmake(OPT Release) |
|
ocv_generate_dependencies_map_configcmake(DBG Debug) |
|
|
|
|
|
# ------------------------------------------------------------------------------------------- |
|
# Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake -> For use *without* "make install" |
|
# ------------------------------------------------------------------------------------------- |
|
set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_CONFIG_FILE_INCLUDE_DIR}\" \"${OpenCV_SOURCE_DIR}/include\" \"${OpenCV_SOURCE_DIR}/include/opencv\"") |
|
set(OpenCV_LIB_DIRS_CONFIGCMAKE "\"${LIBRARY_OUTPUT_PATH}\"") |
|
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"${3P_LIBRARY_OUTPUT_PATH}\"") |
|
|
|
set(OpenCV2_INCLUDE_DIRS_CONFIGCMAKE "") |
|
foreach(m ${OPENCV_MODULES_BUILD}) |
|
if(EXISTS "${OPENCV_MODULE_${m}_LOCATION}/include") |
|
list(APPEND OpenCV2_INCLUDE_DIRS_CONFIGCMAKE "${OPENCV_MODULE_${m}_LOCATION}/include") |
|
endif() |
|
endforeach() |
|
|
|
if(ANDROID AND NOT BUILD_SHARED_LIBS AND HAVE_TBB) |
|
#export TBB headers location because static linkage of TBB might be troublesome if application wants to use TBB itself |
|
list(APPEND OpenCV2_INCLUDE_DIRS_CONFIGCMAKE ${TBB_INCLUDE_DIRS}) |
|
endif() |
|
|
|
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" |
|
# ------------------------------------------------------------------------------------------- |
|
set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_INCLUDE_INSTALL_PATH}/opencv" "\${OpenCV_INSTALL_PATH}/${OPENCV_INCLUDE_INSTALL_PATH}\"") |
|
|
|
set(OpenCV2_INCLUDE_DIRS_CONFIGCMAKE "\"\"") |
|
if(ANDROID) |
|
set(OpenCV_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/sdk/native/libs/\${ANDROID_NDK_ABI_NAME}\"") |
|
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/sdk/native/3rdparty/libs/\${ANDROID_NDK_ABI_NAME}\"") |
|
else() |
|
set(OpenCV_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_LIB_INSTALL_PATH}\"") |
|
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_3P_LIB_INSTALL_PATH}\"") |
|
endif() |
|
if(INSTALL_TO_MANGLED_PATHS) |
|
string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "${OPENCV_3P_LIB_INSTALL_PATH}") |
|
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE}\"") |
|
endif() |
|
|
|
configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake" IMMEDIATE @ONLY) |
|
configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig-version.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig-version.cmake" IMMEDIATE @ONLY) |
|
|
|
if(UNIX) |
|
#http://www.vtk.org/Wiki/CMake/Tutorials/Packaging reference |
|
# For a command "find_package(<name> [major[.minor]] [EXACT] [REQUIRED|QUIET])" |
|
# cmake will look in the following dir on unix: |
|
# <prefix>/(share|lib)/cmake/<name>*/ (U) |
|
# <prefix>/(share|lib)/<name>*/ (U) |
|
# <prefix>/(share|lib)/<name>*/(cmake|CMake)/ (U) |
|
if(INSTALL_TO_MANGLED_PATHS) |
|
install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake DESTINATION ${OPENCV_CONFIG_INSTALL_PATH}-${OPENCV_VERSION}/) |
|
install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig-version.cmake DESTINATION ${OPENCV_CONFIG_INSTALL_PATH}-${OPENCV_VERSION}/) |
|
else() |
|
install(FILES "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake" DESTINATION ${OPENCV_CONFIG_INSTALL_PATH}/) |
|
install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig-version.cmake DESTINATION ${OPENCV_CONFIG_INSTALL_PATH}/) |
|
endif() |
|
endif() |
|
|
|
if(ANDROID) |
|
install(FILES "${OpenCV_SOURCE_DIR}/platforms/android/android.toolchain.cmake" DESTINATION ${OPENCV_CONFIG_INSTALL_PATH}/) |
|
endif() |
|
|
|
# -------------------------------------------------------------------------------------------- |
|
# Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages |
|
# -------------------------------------------------------------------------------------------- |
|
if(WIN32) |
|
set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "\"\${OpenCV_CONFIG_PATH}/include\" \"\${OpenCV_CONFIG_PATH}/include/opencv\"") |
|
set(OpenCV2_INCLUDE_DIRS_CONFIGCMAKE "\"\"") |
|
set(OpenCV_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_CONFIG_PATH}/${OPENCV_LIB_INSTALL_PATH}\"") |
|
set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_CONFIG_PATH}/${OPENCV_3P_LIB_INSTALL_PATH}\"") |
|
|
|
exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/win-install/\"" OUTPUT_VARIABLE RET_VAL) |
|
configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY) |
|
configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/OpenCVConfig-version.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig-version.cmake" IMMEDIATE @ONLY) |
|
install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/") |
|
install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig-version.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/") |
|
endif()
|
|
|