From 60eda6f25c93b37f620b9e12d7a95d753d30ef46 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Mon, 19 Oct 2015 13:36:44 +0300 Subject: [PATCH] export simple libs from OPENCV_LINKER_LIBS (fix #5541) (cherry picked from commit 937a096bf10bedd2d10803f67716393f9065abe8) --- cmake/OpenCVModule.cmake | 5 ++++- cmake/OpenCVUtils.cmake | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index cae2a39c9..88ebe54f7 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -576,7 +576,10 @@ macro(ocv_create_module) if(NOT "${ARGN}" STREQUAL "SKIP_LINK") target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS}) target_link_libraries(${the_module} LINK_INTERFACE_LIBRARIES ${OPENCV_MODULE_${the_module}_DEPS}) - target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS_EXT} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ARGN}) + set(extra_deps ${OPENCV_MODULE_${the_module}_DEPS_EXT} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ARGN}) + ocv_extract_simple_libs(extra_deps _simple_deps _other_deps) + target_link_libraries(${the_module} LINK_INTERFACE_LIBRARIES ${_simple_deps}) # this list goes to "export" + target_link_libraries(${the_module} ${extra_deps}) endif() add_dependencies(opencv_modules ${the_module}) diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake index c23ddcceb..0692b763d 100644 --- a/cmake/OpenCVUtils.cmake +++ b/cmake/OpenCVUtils.cmake @@ -630,3 +630,21 @@ function(ocv_source_group group) file(GLOB srcs ${OCV_SOURCE_GROUP_GLOB}) source_group(${group} FILES ${srcs}) endfunction() + +# build the list of simple dependencies, that links via "-l" +# _all_libs - name of variable with input list +# _simple - name of variable with output list of simple libs +# _other - name of variable with _all_libs - _simple +macro(ocv_extract_simple_libs _all_libs _simple _other) + set(${_simple} "") + set(${_other} "") + foreach(_l ${${_all_libs}}) + if(TARGET ${_l}) + list(APPEND ${_other} ${_l}) + elseif(EXISTS "${_l}") + list(APPEND ${_other} ${_l}) + else() + list(APPEND ${_simple} ${_l}) + endif() + endforeach() +endmacro()