diff --git a/CMakeLists.txt b/CMakeLists.txt index adff9a9137..004b94d609 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,6 +82,13 @@ if (MMDEPLOY_BUILD_SDK) FILE MMDeployTargets.cmake DESTINATION lib/cmake/MMDeploy) + # append backend deps + mmdeploy_add_deps(trt BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS TENSORRT CUDNN) + mmdeploy_add_deps(ort BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS ONNXRUNTIME) + mmdeploy_add_deps(ncnn BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS ncnn) + mmdeploy_add_deps(openvino BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS InferenceEngine) + mmdeploy_add_deps(pplnn BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS pplnn) + include(CMakePackageConfigHelpers) # generate the config file that is includes the exports configure_package_config_file(${CMAKE_SOURCE_DIR}/cmake/MMDeployConfig.cmake.in diff --git a/cmake/MMDeploy.cmake b/cmake/MMDeploy.cmake index 086b45681f..4c67e8f5ac 100644 --- a/cmake/MMDeploy.cmake +++ b/cmake/MMDeploy.cmake @@ -149,3 +149,14 @@ function (mmdeploy_load_dynamic NAME) -Wl,--as-needed) endif () endfunction () + +macro(mmdeploy_add_deps backend) + set(multiValueArgs BACKENDS DEPS) + cmake_parse_arguments(INFO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + set(has_backend OFF) + if (${backend} IN_LIST INFO_BACKENDS) + foreach(pkg IN LISTS INFO_DEPS) + set(${pkg}_DEPENDENCY "find_package(${pkg} REQUIRED)") + endforeach() + endif() +endmacro() diff --git a/cmake/MMDeployConfig.cmake.in b/cmake/MMDeployConfig.cmake.in index ff9bbecd11..3bf75f7e65 100644 --- a/cmake/MMDeployConfig.cmake.in +++ b/cmake/MMDeployConfig.cmake.in @@ -26,17 +26,13 @@ endif () set(MMDEPLOY_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/modules") list(APPEND CMAKE_MODULE_PATH ${MMDEPLOY_MODULE_PATH}) -if ("trt" IN_LIST MMDEPLOY_TARGET_BACKENDS) - find_package(CUDNN) - find_package(TENSORRT) -endif() -if ("ort" IN_LIST MMDEPLOY_TARGET_BACKENDS) - find_package(ONNXRUNTIME) -endif() -if ("ncnn" IN_LIST MMDEPLOY_TARGET_BACKENDS) - find_package(ncnn REQUIRED) -endif() -list(POP_BACK CMAKE_MODULE_PATH) +@TENSORRT_DEPENDENCY@ +@CUDNN_DEPENDENCY@ +@ONNXRUNTIME_DEPENDENCY@ +@ncnn_DEPENDENCY@ +@InferenceEngine_DEPENDENCY@ +@pplnn_DEPENDENCY@ +list(REMOVE_ITEM CMAKE_MODULE_PATH ${MMDEPLOY_MODULE_PATH}) find_package(spdlog REQUIRED) find_package(OpenCV REQUIRED)