diff --git a/CMakeLists.txt b/CMakeLists.txt index 02f7a7579b..1408aac0cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ endif () set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # options -option(MMDEPLOY_SHARED_LIBS "build shared libs" OFF) +option(MMDEPLOY_SHARED_LIBS "build shared libs" ON) option(MMDEPLOY_BUILD_SDK "build MMDeploy SDK" OFF) option(MMDEPLOY_DYNAMIC_BACKEND "dynamic load backend" OFF) option(MMDEPLOY_BUILD_SDK_MONOLITHIC "build single lib for SDK API" ON) @@ -41,14 +41,24 @@ set(MMDEPLOY_TARGET_BACKENDS "" CACHE STRING "target inference engines to suppor set(MMDEPLOY_CODEBASES "all" CACHE STRING "select OpenMMLab codebases") if ((NOT MMDEPLOY_BUILD_SDK_MONOLITHIC) AND MMDEPLOY_DYNAMIC_BACKEND) + message(WARNING + "dynamic backend only supported with MMDEPLOY_BUILD_SDK_MONOLITHIC=ON\n" + "implicit set MMDEPLOY_DYNAMIC_BACKEND=OFF") set(MMDEPLOY_DYNAMIC_BACKEND OFF) endif () +if (MMDEPLOY_BUILD_SDK_MONOLITHIC AND (NOT MMDEPLOY_SHARED_LIBS)) + message(WARNING + "monolithic lib only supported with MMDEPLOY_SHARED_LIBS=ON\n" + "implicit set MMDEPLOY_BUILD_SDK_MONOLITHIC=OFF") + set(MMDEPLOY_BUILD_SDK_MONOLITHIC OFF) +endif () + if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "choose 'Release' as default build type" FORCE) endif () -if (MMDEPLOY_SHARED_LIBS) +if (MMDEPLOY_SHARED_LIBS AND (NOT MMDEPLOY_BUILD_SDK_MONOLITHIC)) set(MMDEPLOY_LIB_TYPE SHARED) else () set(MMDEPLOY_LIB_TYPE STATIC) @@ -124,16 +134,15 @@ if (MMDEPLOY_BUILD_SDK) set(SPDLOG_DEPENDENCY "find_package(spdlog QUIET)") endif () # 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) - if (NOT MMDEPLOY_SHARED_LIBS) + if (NOT (MMDEPLOY_SHARED_LIBS OR MMDEPLOY_BUILD_SDK_MONOLITHIC)) mmdeploy_add_deps(pplnn BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS pplnn) + mmdeploy_add_deps(ncnn BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS ncnn) + mmdeploy_add_deps(trt BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS TENSORRT CUDNN) + mmdeploy_add_deps(ort BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS ONNXRUNTIME) + mmdeploy_add_deps(openvino BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS InferenceEngine) + mmdeploy_add_deps(snpe BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS snpe) + mmdeploy_add_deps(rknn BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS rknn) endif () - mmdeploy_add_deps(snpe BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS snpe) - mmdeploy_add_deps(rknn BACKENDS ${MMDEPLOY_TARGET_BACKENDS} DEPS rknn) - 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/MMDeployConfig.cmake.in b/cmake/MMDeployConfig.cmake.in index fd3679791f..c27d74f6c4 100644 --- a/cmake/MMDeployConfig.cmake.in +++ b/cmake/MMDeployConfig.cmake.in @@ -16,6 +16,7 @@ set(MMDEPLOY_VERSION_MINOR @MMDEPLOY_VERSION_MINOR@) set(MMDEPLOY_VERSION_PATCH @MMDEPLOY_VERSION_PATCH@) if (NOT MMDEPLOY_BUILD_SHARED AND NOT MMDEPLOY_BUILD_SDK_MONOLITHIC) + find_package(OpenCV REQUIRED) if ("cuda" IN_LIST MMDEPLOY_TARGET_DEVICES) find_package(CUDA REQUIRED) if(MSVC) diff --git a/csrc/mmdeploy/codebase/mmdet/CMakeLists.txt b/csrc/mmdeploy/codebase/mmdet/CMakeLists.txt index 92768a43e0..0d2c75d8e8 100644 --- a/csrc/mmdeploy/codebase/mmdet/CMakeLists.txt +++ b/csrc/mmdeploy/codebase/mmdet/CMakeLists.txt @@ -5,7 +5,7 @@ project(mmdeploy_mmdet) file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp") mmdeploy_add_module(${PROJECT_NAME} "${SRCS}") target_link_libraries(${PROJECT_NAME} - PRIVATE mmdeploy_opencv_utils) + PRIVATE mmdeploy_opencv_utils mmdeploy_operation) add_library(mmdeploy::mmdet ALIAS ${PROJECT_NAME}) diff --git a/csrc/mmdeploy/codebase/mmpose/CMakeLists.txt b/csrc/mmdeploy/codebase/mmpose/CMakeLists.txt index 4c165c0d10..cb9014536f 100644 --- a/csrc/mmdeploy/codebase/mmpose/CMakeLists.txt +++ b/csrc/mmdeploy/codebase/mmpose/CMakeLists.txt @@ -11,8 +11,7 @@ mmdeploy_add_module(${PROJECT_NAME} ${MMPOSE_SRCS} ${POSE_TRACKER_SRCS}) target_link_libraries(${PROJECT_NAME} PRIVATE mmdeploy::transform mmdeploy_operation - mmdeploy_opencv_utils - ${OpenCV_LIBS}) + mmdeploy_opencv_utils) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../../apis/c) diff --git a/csrc/mmdeploy/net/ort/CMakeLists.txt b/csrc/mmdeploy/net/ort/CMakeLists.txt index 00ecdaf44b..7b792268d0 100644 --- a/csrc/mmdeploy/net/ort/CMakeLists.txt +++ b/csrc/mmdeploy/net/ort/CMakeLists.txt @@ -7,5 +7,5 @@ include(${CMAKE_SOURCE_DIR}/cmake/modules/FindONNXRUNTIME.cmake) mmdeploy_add_net(${PROJECT_NAME} ort_net.cpp) target_include_directories(${PROJECT_NAME} PRIVATE ${ONNXRUNTIME_DIR}/include) target_link_libraries(${PROJECT_NAME} PRIVATE mmdeploy_onnxruntime_ops_obj) -target_link_libraries(${PROJECT_NAME} PUBLIC onnxruntime) +target_link_libraries(${PROJECT_NAME} PRIVATE onnxruntime) add_library(mmdeploy::ort_net ALIAS ${PROJECT_NAME}) diff --git a/csrc/mmdeploy/net/trt/CMakeLists.txt b/csrc/mmdeploy/net/trt/CMakeLists.txt index bc49d0b176..79911d53b9 100644 --- a/csrc/mmdeploy/net/trt/CMakeLists.txt +++ b/csrc/mmdeploy/net/trt/CMakeLists.txt @@ -10,6 +10,6 @@ target_include_directories(${PROJECT_NAME} PRIVATE target_include_directories(${PROJECT_NAME} PRIVATE ${CUDNN_DIR}/include) target_include_directories(${PROJECT_NAME} PRIVATE ${CUDA_TOOLKIT_ROOT_DIR}/include) target_link_libraries(${PROJECT_NAME} PRIVATE mmdeploy_tensorrt_ops_obj) -target_link_libraries(${PROJECT_NAME} PUBLIC ${TENSORRT_LIBS} cudnn cuda) +target_link_libraries(${PROJECT_NAME} PRIVATE ${TENSORRT_LIBS} cudnn cuda) add_library(mmdeploy::trt_net ALIAS ${PROJECT_NAME}) diff --git a/csrc/mmdeploy/utils/opencv/CMakeLists.txt b/csrc/mmdeploy/utils/opencv/CMakeLists.txt index 2dafb8da65..4c7238ae9b 100644 --- a/csrc/mmdeploy/utils/opencv/CMakeLists.txt +++ b/csrc/mmdeploy/utils/opencv/CMakeLists.txt @@ -6,7 +6,7 @@ mmdeploy_add_library(${PROJECT_NAME} opencv_utils.cpp) target_link_libraries(${PROJECT_NAME} PRIVATE mmdeploy::core - PUBLIC ${OpenCV_LIBS}) + PUBLIC $) target_include_directories(${PROJECT_NAME} INTERFACE $)