diff --git a/.gitmodules b/.gitmodules index f4212c30c..cb2d16d57 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "third_party/pybind11"] path = third_party/pybind11 url = https://github.com/pybind/pybind11.git +[submodule "third_party/spdlog"] + path = third_party/spdlog + url = https://github.com/gabime/spdlog.git diff --git a/CMakeLists.txt b/CMakeLists.txt index c2acb8f90..ef4d86d9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. if (NOT DEFINED CMAKE_INSTALL_PREFIX) - set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "MMDeploy's installation directory") + set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "installation directory") endif () message(STATUS "CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") @@ -19,21 +19,28 @@ endif () set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) # options -option(BUILD_SHARED_LIBS "build shared lib" ON) -option(MMDEPLOY_BUILD_MODEL_OPTIMIZER "build MMDeploy's model optimizer" ON) -option(MMDEPLOY_BUILD_SDK "build MMDeploy's SDK" OFF) -option(MMDEPLOY_ZIP_MODEL "support sdk model in zip format" OFF) -option(MMDEPLOY_BUILD_SDK_CSHARP_API "build MMDeployExtern.dll for C# API" OFF) -option(MMDEPLOY_BUILD_TEST "build MMDeploy's csrc's unittest" OFF) -set(MMDEPLOY_TARGET_DEVICES - "cpu" CACHE STRING "MMDeploy's target devices") -set(MMDEPLOY_TARGET_BACKENDS "" CACHE STRING "MMDeploy's target inference engines") -set(MMDEPLOY_CODEBASES "all" CACHE STRING "select OpenMMLab's codebases") +option(MMDEPLOY_SHARED_LIBS "build shared libs" ON) +option(MMDEPLOY_BUILD_SDK "build MMDeploy SDK" OFF) +option(MMDEPLOY_BUILD_TEST "build unittests" OFF) +option(MMDEPLOY_BUILD_SDK_PYTHON_API "build SDK Python API" OFF) +option(MMDEPLOY_BUILD_SDK_CXX_API "build SDK C++ API" OFF) +option(MMDEPLOY_BUILD_SDK_CSHARP_API "build SDK C# API support" OFF) +option(MMDEPLOY_SPDLOG_EXTERNAL "use external spdlog" OFF) +option(MMDEPLOY_ZIP_MODEL "support SDK model in zip format" OFF) +set(MMDEPLOY_TARGET_DEVICES "cpu" CACHE STRING "target devices to support") +set(MMDEPLOY_TARGET_BACKENDS "" CACHE STRING "target inference engines to support") +set(MMDEPLOY_CODEBASES "all" CACHE STRING "select OpenMMLab codebases") if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "choose 'Release' as default build type" FORCE) endif () +if (MMDEPLOY_SHARED_LIBS) + set(MMDEPLOY_LIB_TYPE SHARED) +else () + set(MMDEPLOY_LIB_TYPE STATIC) +endif () + # when CUDA devices are enabled, the environment variable ASAN_OPTIONS=protect_shadow_gap=0 # must be set at runtime if (MMDEPLOY_ASAN_ENABLE) @@ -53,16 +60,20 @@ if (MSVC) add_compile_options($<$:/Zc:preprocessor>) # /experimental:preprocessor on VS2017 add_compile_options($<$:/Zc:__cplusplus>) add_compile_options($<$:/wd4251>) -else () - add_compile_options($<$:-fvisibility=hidden>) endif () -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) - add_library(MMDeployStaticModules INTERFACE) add_library(MMDeployDynamicModules INTERFACE) add_library(MMDeployLibs INTERFACE) +if ((cuda IN_LIST MMDEPLOY_TARGET_DEVICES) OR (trt IN_LIST MMDEPLOY_TARGET_BACKENDS)) + include(cmake/cuda.cmake NO_POLICY_SCOPE) +endif () + +# this must come after including cuda.cmake because policies in function scope is captured +# at function definition +include(cmake/MMDeploy.cmake) + add_subdirectory(csrc) if (MMDEPLOY_BUILD_SDK) @@ -84,6 +95,9 @@ if (MMDEPLOY_BUILD_SDK) FILE MMDeployTargets.cmake DESTINATION lib/cmake/MMDeploy) + if (MMDEPLOY_SPDLOG_EXTERNAL) + 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) @@ -110,13 +124,24 @@ if (MMDEPLOY_BUILD_SDK) ${CMAKE_CURRENT_BINARY_DIR}/MMDeployConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/MMDeployConfigVersion.cmake ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MMDeploy.cmake - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/loader.cpp.in DESTINATION lib/cmake/MMDeploy ) + + if (MSVC) + install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/loader.cpp.in + DESTINATION lib/cmake/MMDeploy + ) + endif () + install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules DESTINATION lib/cmake/MMDeploy ) install(DIRECTORY ${CMAKE_SOURCE_DIR}/demo/csrc/ DESTINATION example) + + if (${CMAKE_VERSION} VERSION_LESS "3.17.0") + install(SCRIPT cmake/post-install.cmake) + endif () endif () diff --git a/cmake/MMDeploy.cmake b/cmake/MMDeploy.cmake index 4c67e8f5a..0983dc1f0 100644 --- a/cmake/MMDeploy.cmake +++ b/cmake/MMDeploy.cmake @@ -14,8 +14,18 @@ endfunction () function (mmdeploy_add_library NAME) + # EXCLUDE: exclude from registering & exporting cmake_parse_arguments(_MMDEPLOY "EXCLUDE" "" "" ${ARGN}) - add_library(${NAME} ${_MMDEPLOY_UNPARSED_ARGUMENTS}) + # search for add_library keywords + cmake_parse_arguments(_TYPE "STATIC;SHARED;MODULE" "" "" ${_MMDEPLOY_UNPARSED_ARGUMENTS}) + set(_MAYBE_TYPE) + if (NOT (_TYPE_STATIC OR _TYPE_SHARED OR _TYPE_MODULE)) + set(_MAYBE_TYPE ${MMDEPLOY_LIB_TYPE}) + endif () + add_library(${NAME} ${_MAYBE_TYPE} ${_MMDEPLOY_UNPARSED_ARGUMENTS}) + if (NOT MSVC) + target_compile_options(${NAME} PRIVATE $<$:-fvisibility=hidden>) + endif () target_compile_definitions(${NAME} PRIVATE -DMMDEPLOY_API_EXPORTS=1) get_target_property(_TYPE ${NAME} TYPE) if (_TYPE STREQUAL STATIC_LIBRARY) @@ -36,19 +46,25 @@ function (mmdeploy_add_module NAME) # LIBRARY: the module is also a library (add_libray with SHARED instead of MODULE) cmake_parse_arguments(_MMDEPLOY "EXCLUDE;LIBRARY" "" "" ${ARGN}) # search for add_library keywords - cmake_parse_arguments(_KW "STATIC;SHARED;MODULE" "" "" ${_MMDEPLOY_UNPARSED_ARGUMENTS}) + cmake_parse_arguments(_TYPE "STATIC;SHARED;MODULE" "" "" ${_MMDEPLOY_UNPARSED_ARGUMENTS}) - set(_MAYBE_MODULE) + set(_MAYBE_TYPE) # no library type specified - if (NOT (_KW_STATIC OR _KW_SHARED OR _KW_MODULE)) + if (NOT (_TYPE_STATIC OR _TYPE_SHARED OR _TYPE_MODULE)) # shared but not marked as a library, build module library so that no .lib dependency # will be generated for MSVC - if (MSVC AND BUILD_SHARED_LIBS AND NOT _MMDEPLOY_LIBRARY) - set(_MAYBE_MODULE MODULE) + if (MSVC AND MMDEPLOY_SHARED_LIBS AND NOT _MMDEPLOY_LIBRARY) + set(_MAYBE_TYPE MODULE) + else () + set(_MAYBE_TYPE ${MMDEPLOY_LIB_TYPE}) endif () endif () - add_library(${NAME} ${_MAYBE_MODULE} ${_MMDEPLOY_UNPARSED_ARGUMENTS}) + add_library(${NAME} ${_MAYBE_TYPE} ${_MMDEPLOY_UNPARSED_ARGUMENTS}) + + if (NOT MSVC) + target_compile_options(${NAME} PRIVATE $<$:-fvisibility=hidden>) + endif () # automatically link mmdeploy::core if exists if (TARGET mmdeploy::core) diff --git a/cmake/MMDeployConfig.cmake.in b/cmake/MMDeployConfig.cmake.in index 3bf75f7e6..c8dfa632a 100644 --- a/cmake/MMDeployConfig.cmake.in +++ b/cmake/MMDeployConfig.cmake.in @@ -8,7 +8,7 @@ set(MMDEPLOY_CODEBASES @MMDEPLOY_CODEBASES@) set(MMDEPLOY_TARGET_DEVICES @MMDEPLOY_TARGET_DEVICES@) set(MMDEPLOY_TARGET_BACKENDS @MMDEPLOY_TARGET_BACKENDS@) set(MMDEPLOY_BUILD_TYPE @CMAKE_BUILD_TYPE@) -set(MMDEPLOY_BUILD_SHARED @BUILD_SHARED_LIBS@) +set(MMDEPLOY_BUILD_SHARED @MMDEPLOY_SHARED_LIBS@) if (NOT MMDEPLOY_BUILD_SHARED) if ("cuda" IN_LIST MMDEPLOY_TARGET_DEVICES) @@ -26,6 +26,7 @@ endif () set(MMDEPLOY_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/modules") list(APPEND CMAKE_MODULE_PATH ${MMDEPLOY_MODULE_PATH}) +@SPDLOG_DEPENDENCY@ @TENSORRT_DEPENDENCY@ @CUDNN_DEPENDENCY@ @ONNXRUNTIME_DEPENDENCY@ @@ -34,7 +35,6 @@ list(APPEND CMAKE_MODULE_PATH ${MMDEPLOY_MODULE_PATH}) @pplnn_DEPENDENCY@ list(REMOVE_ITEM CMAKE_MODULE_PATH ${MMDEPLOY_MODULE_PATH}) -find_package(spdlog REQUIRED) find_package(OpenCV REQUIRED) set(THREADS_PREFER_PTHREAD_FLAG ON) diff --git a/cmake/cuda.cmake b/cmake/cuda.cmake index e64853932..3e9a9bd98 100644 --- a/cmake/cuda.cmake +++ b/cmake/cuda.cmake @@ -1,19 +1,18 @@ # Copyright (c) OpenMMLab. All rights reserved. -#message(STATUS "CMAKE_VERSION: ${CMAKE_VERSION}") if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.18.0") # suppress 'CMAKE_CUDA_ARCHITECTURES' warning cmake_policy(SET CMP0104 OLD) endif () -if (MSVC) +if (MSVC OR (NOT DEFINED CMAKE_CUDA_RUNTIME_LIBRARY)) # use shared, on windows, python api can't build with static lib. set(CMAKE_CUDA_RUNTIME_LIBRARY Shared) + set(CUDA_USE_STATIC_CUDA_RUNTIME OFF) endif () # nvcc compiler settings find_package(CUDA REQUIRED) -#message(STATUS "CUDA VERSION: ${CUDA_VERSION_STRING}") if (MSVC) set(CMAKE_CUDA_COMPILER ${CUDA_TOOLKIT_ROOT_DIR}/bin/nvcc.exe) diff --git a/cmake/post-install.cmake b/cmake/post-install.cmake new file mode 100644 index 000000000..d289e5399 --- /dev/null +++ b/cmake/post-install.cmake @@ -0,0 +1,10 @@ + + +set(_TARGETS_PATH ${CMAKE_INSTALL_PREFIX}/lib/cmake/MMDeploy/MMDeployTargets.cmake) + +file(READ ${_TARGETS_PATH} _MMDEPLOY_TARGETS) + +string(REGEX REPLACE "::@<0x[a-z0-9]+>" "" + _MMDEPLOY_TARGETS_FIXED "${_MMDEPLOY_TARGETS}") + +file(WRITE ${_TARGETS_PATH} "${_MMDEPLOY_TARGETS_FIXED}") diff --git a/cmake/tensorrt.cmake b/cmake/tensorrt.cmake index af9f6e226..6951dd11c 100644 --- a/cmake/tensorrt.cmake +++ b/cmake/tensorrt.cmake @@ -1,5 +1,5 @@ # Copyright (c) OpenMMLab. All rights reserved. -include(${CMAKE_SOURCE_DIR}/cmake/cuda.cmake) + include(${CMAKE_SOURCE_DIR}/cmake/modules/FindTENSORRT.cmake) include(${CMAKE_SOURCE_DIR}/cmake/modules/FindCUDNN.cmake) find_path( diff --git a/csrc/CMakeLists.txt b/csrc/CMakeLists.txt index 18131425a..3bbc50d99 100644 --- a/csrc/CMakeLists.txt +++ b/csrc/CMakeLists.txt @@ -3,6 +3,9 @@ add_subdirectory(backend_ops) if (MMDEPLOY_BUILD_SDK) + # include OpenCV for SDK modules since many of them depends on it + include(${CMAKE_SOURCE_DIR}/cmake/opencv.cmake) + add_subdirectory(core) add_subdirectory(execution) add_subdirectory(utils) diff --git a/csrc/apis/c/CMakeLists.txt b/csrc/apis/c/CMakeLists.txt index 7c682848e..71e8b27a8 100644 --- a/csrc/apis/c/CMakeLists.txt +++ b/csrc/apis/c/CMakeLists.txt @@ -1,8 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(capis) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(capis) set(COMMON_LIST common diff --git a/csrc/apis/csharp/README.md b/csrc/apis/csharp/README.md index 49427121b..e50fb4c4c 100644 --- a/csrc/apis/csharp/README.md +++ b/csrc/apis/csharp/README.md @@ -23,7 +23,7 @@ To use the nuget package, you also need to download the backend dependencies. Fo **Step 0.** Build sdk. -Before building the c# api, you need to build sdk first. Please follow this [tutorial](../../../docs/en/build/windows.md)/[教程](../../../docs/zh_cn/build/windows.md) to build sdk. Remember to set the MMDEPLOY_BUILD_CSHARP_EXTERN option to ON. We recommend setting `BUILD_SHARED_LIBS` to OFF and use the static third party libraries(spdlog, pplcv, opencv, etc.). If so, you only need add the backend dependencies to your system path, or you need to add all dependencies. +Before building the c# api, you need to build sdk first. Please follow this [tutorial](../../../docs/en/build/windows.md)/[教程](../../../docs/zh_cn/build/windows.md) to build sdk. Remember to set the MMDEPLOY_BUILD_SDK_CSHARP_API option to ON. We recommend setting `MMDEPLOY_SHARED_LIBS` to OFF and use the static third party libraries(pplcv, opencv, etc.). If so, you only need add the backend dependencies to your system path, or you need to add all dependencies. If you follow the tutorial, the MMDeployExtern.dll will be built in `build\bin\release`. Make sure the expected dll is in that path or the next step will throw a file-not-exist error. @@ -42,4 +42,4 @@ dotnet build --configuration Release -p:Version=1.0.0 You can set the package-version through `Properties -> Package Version`. The default version is 1.0.0 if you don't set it. -If you meets some missing dependencies error, follow the vs instructions. +If you encounter missing dependencies, follow the instructions for MSVC. diff --git a/csrc/apis/python/CMakeLists.txt b/csrc/apis/python/CMakeLists.txt index 060a8169a..6efc07bd7 100644 --- a/csrc/apis/python/CMakeLists.txt +++ b/csrc/apis/python/CMakeLists.txt @@ -1,19 +1,20 @@ # Copyright (c) OpenMMLab. All rights reserved. + cmake_minimum_required(VERSION 3.14) project(mmdeploy_python) -if ("cuda" IN_LIST MMDEPLOY_TARGET_DEVICES) - include(${CMAKE_SOURCE_DIR}/cmake/cuda.cmake) -endif () +set(MMDEPLOY_PYTHON_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/common.cpp) -if (NOT TARGET pybind11) +set(CMAKE_CXX_STANDARD 17) + +if (${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME}) + add_subdirectory(${CMAKE_SOURCE_DIR}/../../../third_party/pybind11 + ${CMAKE_CURRENT_BINARY_DIR}/pybind11) + find_package(MMDeploy REQUIRED) +elseif (NOT TARGET pybind11) add_subdirectory(${CMAKE_SOURCE_DIR}/third_party/pybind11 pybind11) endif () -set(MMDEPLOY_PYTHON_SRCS - ${CMAKE_CURRENT_SOURCE_DIR}/common.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/executor.cpp) - macro(mmdeploy_python_add_module name) if (TARGET mmdeploy_${name}) list(APPEND MMDEPLOY_PYTHON_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/${name}.cpp) @@ -36,5 +37,5 @@ mmdeploy_load_dynamic(${PROJECT_NAME} MMDeployDynamicModules) target_link_libraries(${PROJECT_NAME} PRIVATE MMDeployLibs) target_include_directories(${PROJECT_NAME} PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/../..) + ${CMAKE_CURRENT_SOURCE_DIR}/.. + ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/csrc/apis/python/common.cpp b/csrc/apis/python/common.cpp index 16344a047..11a489e4c 100644 --- a/csrc/apis/python/common.cpp +++ b/csrc/apis/python/common.cpp @@ -1,8 +1,6 @@ // Copyright (c) OpenMMLab. All rights reserved. -#include "apis/python/common.h" - -#include "core/value.h" +#include "common.h" namespace mmdeploy { @@ -34,6 +32,8 @@ mm_mat_t GetMat(const PyImage& img) { return mat; } +#if 0 + py::object ConvertToPyObject(const Value& value) { switch (value.type()) { case ValueType::kNull: @@ -102,6 +102,8 @@ Value ConvertToValue(const py::object& obj) { } } +#endif + } // namespace mmdeploy PYBIND11_MODULE(mmdeploy_python, m) { diff --git a/csrc/apis/python/common.h b/csrc/apis/python/common.h index 677c689ab..981b7a190 100644 --- a/csrc/apis/python/common.h +++ b/csrc/apis/python/common.h @@ -5,7 +5,7 @@ #include -#include "apis/c/common.h" +#include "c/common.h" #include "pybind11/numpy.h" #include "pybind11/pybind11.h" #include "pybind11/stl.h" diff --git a/csrc/apis/python/executor.cpp b/csrc/apis/python/executor.cpp index ee2f9c750..275cc6420 100644 --- a/csrc/apis/python/executor.cpp +++ b/csrc/apis/python/executor.cpp @@ -1,6 +1,6 @@ // Copyright (c) OpenMMLab. All rights reserved. -#include "apis/python/common.h" +#include "common.h" #include "core/utils/formatter.h" #include "execution/execution.h" #include "execution/schedulers/inlined_scheduler.h" @@ -47,16 +47,6 @@ using _python::PySender; static void register_python_executor(py::module& m) { py::class_>(m, "PySender") .def("__await__", &PySender::__await__); - - // m.def("test_async", [](const py::object& x) { - // static StaticThreadPool pool; - // TypeErasedScheduler scheduler{pool.GetScheduler()}; - // auto sender = TransferJust(scheduler, ConvertToValue(x)) | Then([](Value x) { - // // std::this_thread::sleep_for(std::chrono::milliseconds(10)); - // return Value(x.get() * x.get()); - // }); - // return std::make_unique(std::move(sender)); - // }); } class PythonExecutorRegisterer { diff --git a/csrc/apis/python/pose_detector.cpp b/csrc/apis/python/pose_detector.cpp index 9f3c92dab..cf8de277c 100644 --- a/csrc/apis/python/pose_detector.cpp +++ b/csrc/apis/python/pose_detector.cpp @@ -3,9 +3,9 @@ #include "pose_detector.h" #include +#include #include "common.h" -#include "core/logger.h" namespace mmdeploy { @@ -14,7 +14,6 @@ using Rect = std::array; class PyPoseDedector { public: PyPoseDedector(const char *model_path, const char *device_name, int device_id) { - MMDEPLOY_INFO("{}, {}, {}", model_path, device_name, device_id); auto status = mmdeploy_pose_detector_create_by_path(model_path, device_name, device_id, &handle_); if (status != MM_SUCCESS) { @@ -26,9 +25,9 @@ class PyPoseDedector { return py::list{}; } if (vboxes.size() != 0 && vboxes.size() != imgs.size()) { - std::string error = - fmt::format("imgs length not equal with vboxes [{} vs {}]", imgs.size(), vboxes.size()); - throw std::invalid_argument(error); + std::ostringstream os; + os << "imgs length not equal with vboxes [" << imgs.size() << " vs " << vboxes.size() << "]"; + throw std::invalid_argument(os.str()); } std::vector mats; @@ -51,7 +50,7 @@ class PyPoseDedector { // full image if (vboxes.size() == 0) { for (int i = 0; i < mats.size(); i++) { - mm_rect_t box = {0.f, 0.f, mats[i].width - 1, mats[i].height - 1}; + mm_rect_t box = {0.f, 0.f, mats[i].width - 1.f, mats[i].height - 1.f}; boxes.push_back(box); bbox_count.push_back(1); } diff --git a/csrc/apis/python/rotated_detector.cpp b/csrc/apis/python/rotated_detector.cpp index b226cd578..c86d69053 100644 --- a/csrc/apis/python/rotated_detector.cpp +++ b/csrc/apis/python/rotated_detector.cpp @@ -3,14 +3,12 @@ #include "rotated_detector.h" #include "common.h" -#include "core/logger.h" namespace mmdeploy { class PyRotatedDetector { public: PyRotatedDetector(const char *model_path, const char *device_name, int device_id) { - MMDEPLOY_INFO("{}, {}, {}", model_path, device_name, device_id); auto status = mmdeploy_rotated_detector_create_by_path(model_path, device_name, device_id, &handle_); if (status != MM_SUCCESS) { diff --git a/csrc/archive/CMakeLists.txt b/csrc/archive/CMakeLists.txt index 82b2c7807..e5f03565e 100644 --- a/csrc/archive/CMakeLists.txt +++ b/csrc/archive/CMakeLists.txt @@ -1,12 +1,15 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_archive) add_library(${PROJECT_NAME} INTERFACE) target_link_libraries(${PROJECT_NAME} INTERFACE mmdeploy::core) add_library(mmdeploy::archive ALIAS mmdeploy_archive) -install(DIRECTORY ${CMAKE_SOURCE_DIR}/csrc/archive - DESTINATION include/cpp - FILES_MATCHING PATTERN "*.h") -install(FILES ${CMAKE_SOURCE_DIR}/third_party/json/json.hpp DESTINATION include/cpp/archive) +if (MMDEPLOY_BUILD_SDK_CXX_API) + install(DIRECTORY ${CMAKE_SOURCE_DIR}/csrc/archive + DESTINATION include/cpp + FILES_MATCHING PATTERN "*.h") + install(FILES ${CMAKE_SOURCE_DIR}/third_party/json/json.hpp + DESTINATION include/cpp/archive) +endif () diff --git a/csrc/backend_ops/ncnn/CMakeLists.txt b/csrc/backend_ops/ncnn/CMakeLists.txt index 9580d3b96..42901f77f 100755 --- a/csrc/backend_ops/ncnn/CMakeLists.txt +++ b/csrc/backend_ops/ncnn/CMakeLists.txt @@ -1,5 +1,4 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) # ncnn find_package(ncnn) diff --git a/csrc/backend_ops/ncnn/onnx2ncnn/CMakeLists.txt b/csrc/backend_ops/ncnn/onnx2ncnn/CMakeLists.txt index 705113ae7..6901e4fca 100755 --- a/csrc/backend_ops/ncnn/onnx2ncnn/CMakeLists.txt +++ b/csrc/backend_ops/ncnn/onnx2ncnn/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(onnx2ncnn) find_package(Protobuf) diff --git a/csrc/backend_ops/ncnn/ops/CMakeLists.txt b/csrc/backend_ops/ncnn/ops/CMakeLists.txt index 8af1b85f0..abfff8e3f 100755 --- a/csrc/backend_ops/ncnn/ops/CMakeLists.txt +++ b/csrc/backend_ops/ncnn/ops/CMakeLists.txt @@ -1,8 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_ncnn_ops) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_ncnn_ops) # add plugin source file(GLOB_RECURSE NCNN_OPS_SRCS *.cpp) diff --git a/csrc/backend_ops/ncnn/pyncnn_ext/CMakeLists.txt b/csrc/backend_ops/ncnn/pyncnn_ext/CMakeLists.txt index c55acb488..652f841f7 100755 --- a/csrc/backend_ops/ncnn/pyncnn_ext/CMakeLists.txt +++ b/csrc/backend_ops/ncnn/pyncnn_ext/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(ncnn_ext) # pybind11 diff --git a/csrc/backend_ops/onnxruntime/CMakeLists.txt b/csrc/backend_ops/onnxruntime/CMakeLists.txt index 3d1a1e14c..67f8439a4 100644 --- a/csrc/backend_ops/onnxruntime/CMakeLists.txt +++ b/csrc/backend_ops/onnxruntime/CMakeLists.txt @@ -1,8 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_onnxruntime_ops) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) include(${CMAKE_SOURCE_DIR}/cmake/modules/FindONNXRUNTIME.cmake) # add plugin source diff --git a/csrc/backend_ops/tensorrt/CMakeLists.txt b/csrc/backend_ops/tensorrt/CMakeLists.txt index 9f375596f..a221311ac 100644 --- a/csrc/backend_ops/tensorrt/CMakeLists.txt +++ b/csrc/backend_ops/tensorrt/CMakeLists.txt @@ -1,10 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -include(${CMAKE_SOURCE_DIR}/cmake/cuda.cmake NO_POLICY_SCOPE) -project(mmdeploy_tensorrt_ops CUDA CXX) +project(mmdeploy_tensorrt_ops) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/tensorrt.cmake NO_POLICY_SCOPE) +include(${CMAKE_SOURCE_DIR}/cmake/tensorrt.cmake) # cub if (NOT DEFINED CUB_ROOT_DIR) diff --git a/csrc/backend_ops/torchscript/CMakeLists.txt b/csrc/backend_ops/torchscript/CMakeLists.txt index e38312999..8d862b941 100644 --- a/csrc/backend_ops/torchscript/CMakeLists.txt +++ b/csrc/backend_ops/torchscript/CMakeLists.txt @@ -1,5 +1,4 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) add_subdirectory(ops) add_subdirectory(optimizer) diff --git a/csrc/backend_ops/torchscript/ops/CMakeLists.txt b/csrc/backend_ops/torchscript/ops/CMakeLists.txt index 71c7256cd..d53ca9527 100644 --- a/csrc/backend_ops/torchscript/ops/CMakeLists.txt +++ b/csrc/backend_ops/torchscript/ops/CMakeLists.txt @@ -1,16 +1,13 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) if("cuda" IN_LIST MMDEPLOY_TARGET_DEVICES) project(mmdeploy_torchscript_ops CUDA CXX) - include(${CMAKE_SOURCE_DIR}/cmake/cuda.cmake NO_POLICY_SCOPE) file(GLOB_RECURSE BACKEND_OPS_SRCS *.cpp *.cu) else() project(mmdeploy_torchscript_ops CXX) file(GLOB_RECURSE BACKEND_OPS_SRCS *.cpp) endif() -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) find_package(Torch REQUIRED) diff --git a/csrc/backend_ops/torchscript/optimizer/CMakeLists.txt b/csrc/backend_ops/torchscript/optimizer/CMakeLists.txt index 8f3cb46d7..ead1e61a5 100644 --- a/csrc/backend_ops/torchscript/optimizer/CMakeLists.txt +++ b/csrc/backend_ops/torchscript/optimizer/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(ts_optimizer) find_package(Torch REQUIRED) diff --git a/csrc/codebase/CMakeLists.txt b/csrc/codebase/CMakeLists.txt index 70958246a..09b69fd44 100644 --- a/csrc/codebase/CMakeLists.txt +++ b/csrc/codebase/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_codebase) set(CODEBASES "") diff --git a/csrc/codebase/mmcls/CMakeLists.txt b/csrc/codebase/mmcls/CMakeLists.txt index 259b653cd..71ccdc0cd 100644 --- a/csrc/codebase/mmcls/CMakeLists.txt +++ b/csrc/codebase/mmcls/CMakeLists.txt @@ -1,8 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_mmcls) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_mmcls) file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp") mmdeploy_add_module(${PROJECT_NAME} "${SRCS}") diff --git a/csrc/codebase/mmdet/CMakeLists.txt b/csrc/codebase/mmdet/CMakeLists.txt index 75ae6c4d4..08839bb23 100644 --- a/csrc/codebase/mmdet/CMakeLists.txt +++ b/csrc/codebase/mmdet/CMakeLists.txt @@ -1,9 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_mmdet) -include(${CMAKE_SOURCE_DIR}/cmake/opencv.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_mmdet) file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp") mmdeploy_add_module(${PROJECT_NAME} "${SRCS}") diff --git a/csrc/codebase/mmedit/CMakeLists.txt b/csrc/codebase/mmedit/CMakeLists.txt index 59646d0f6..d4b6050b3 100644 --- a/csrc/codebase/mmedit/CMakeLists.txt +++ b/csrc/codebase/mmedit/CMakeLists.txt @@ -1,9 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_mmedit) -include(${CMAKE_SOURCE_DIR}/cmake/opencv.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_mmedit) file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp") mmdeploy_add_module(${PROJECT_NAME} "${SRCS}") diff --git a/csrc/codebase/mmocr/CMakeLists.txt b/csrc/codebase/mmocr/CMakeLists.txt index 975f4de02..56ee91c86 100644 --- a/csrc/codebase/mmocr/CMakeLists.txt +++ b/csrc/codebase/mmocr/CMakeLists.txt @@ -1,9 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_mmocr) -include(${CMAKE_SOURCE_DIR}/cmake/opencv.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_mmocr) aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} OCR_SRCS) aux_source_directory(${CMAKE_SOURCE_DIR}/third_party/clipper CLIPPER_SRCS) diff --git a/csrc/codebase/mmocr/cpu/CMakeLists.txt b/csrc/codebase/mmocr/cpu/CMakeLists.txt index 4bcb0470c..8d0f60076 100644 --- a/csrc/codebase/mmocr/cpu/CMakeLists.txt +++ b/csrc/codebase/mmocr/cpu/CMakeLists.txt @@ -1,10 +1,8 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) project(mmdeploy_mmocr_cpu_impl CXX) if ("cpu" IN_LIST MMDEPLOY_TARGET_DEVICES) - include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) add_library(${PROJECT_NAME} OBJECT dbnet.cpp panet.cpp psenet.cpp) set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE 1) target_link_libraries(${PROJECT_NAME} PRIVATE diff --git a/csrc/codebase/mmocr/cuda/CMakeLists.txt b/csrc/codebase/mmocr/cuda/CMakeLists.txt index 2ad5f1612..1234e2701 100644 --- a/csrc/codebase/mmocr/cuda/CMakeLists.txt +++ b/csrc/codebase/mmocr/cuda/CMakeLists.txt @@ -1,12 +1,8 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) project(mmdeploy_mmocr_cuda_impl) if ("cuda" IN_LIST MMDEPLOY_TARGET_DEVICES) - include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) - include(${CMAKE_SOURCE_DIR}/cmake/cuda.cmake NO_POLICY_SCOPE) - enable_language(CUDA) add_library(${PROJECT_NAME} OBJECT connected_component.cu utils.cu @@ -19,7 +15,8 @@ if ("cuda" IN_LIST MMDEPLOY_TARGET_DEVICES) target_link_libraries(${PROJECT_NAME} PRIVATE mmdeploy_opencv_utils mmdeploy::core - ${CUDA_LIBRARIES}) + ${CUDA_LIBRARIES} + cuda) target_link_libraries(mmdeploy_mmocr PRIVATE ${PROJECT_NAME}) mmdeploy_export(${PROJECT_NAME}) diff --git a/csrc/codebase/mmpose/CMakeLists.txt b/csrc/codebase/mmpose/CMakeLists.txt index ae58ce91b..bdf64f470 100644 --- a/csrc/codebase/mmpose/CMakeLists.txt +++ b/csrc/codebase/mmpose/CMakeLists.txt @@ -1,9 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_mmpose) -include(${CMAKE_SOURCE_DIR}/cmake/opencv.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp") mmdeploy_add_module(${PROJECT_NAME} "${SRCS}") diff --git a/csrc/codebase/mmrotate/CMakeLists.txt b/csrc/codebase/mmrotate/CMakeLists.txt index 99dce7408..8d4f1eb25 100644 --- a/csrc/codebase/mmrotate/CMakeLists.txt +++ b/csrc/codebase/mmrotate/CMakeLists.txt @@ -1,9 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_mmrotate) -include(${CMAKE_SOURCE_DIR}/cmake/opencv.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_mmrotate) file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp") mmdeploy_add_module(${PROJECT_NAME} "${SRCS}") diff --git a/csrc/codebase/mmseg/CMakeLists.txt b/csrc/codebase/mmseg/CMakeLists.txt index 89a15bb32..a60544b11 100644 --- a/csrc/codebase/mmseg/CMakeLists.txt +++ b/csrc/codebase/mmseg/CMakeLists.txt @@ -1,9 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_mmseg) -include(${CMAKE_SOURCE_DIR}/cmake/opencv.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_mmseg) file(GLOB_RECURSE SRCS ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp") mmdeploy_add_module(${PROJECT_NAME} "${SRCS}") diff --git a/csrc/core/CMakeLists.txt b/csrc/core/CMakeLists.txt index efe2e8920..e89c5ca8f 100644 --- a/csrc/core/CMakeLists.txt +++ b/csrc/core/CMakeLists.txt @@ -1,24 +1,25 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_core) -#[==[ -Refer to: https://cmake.org/cmake/help/latest/command/file.html -Note We do not recommend using GLOB to collect a list of source files from your source tree. -If no CMakeLists.txt file changes when a source is added or removed then the generated build -system cannot know when to ask CMake to regenerate. The CONFIGURE_DEPENDS flag may not work -reliably on all generators, or if a new generator is added in the future that cannot support it, -projects using it will be stuck. Even if CONFIGURE_DEPENDS works reliably, there is still a cost -to perform the check on every rebuild. -#]==] +# this is used to keep compatibility with legacy spdlog where CMake package is not available set(SPDLOG_LIB) -find_package(spdlog QUIET) -if (spdlog_FOUND) - message(STATUS "spdlog is found") - set(SPDLOG_LIB spdlog::spdlog) -endif () -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +if (MMDEPLOY_SPDLOG_EXTERNAL) + find_package(spdlog QUIET) + if (spdlog_FOUND) + set(SPDLOG_LIB spdlog::spdlog) + endif () +else () + set(MMDEPLOY_SPDLOG_DIR ${CMAKE_SOURCE_DIR}/third_party/spdlog) + add_subdirectory(${MMDEPLOY_SPDLOG_DIR} ${CMAKE_CURRENT_BINARY_DIR}/spdlog EXCLUDE_FROM_ALL) + set_target_properties(spdlog PROPERTIES POSITION_INDEPENDENT_CODE ON) + set(SPDLOG_LIB spdlog::spdlog) + mmdeploy_export(spdlog) + if (MMDEPLOY_BUILD_SDK_CXX_API) + install(DIRECTORY ${MMDEPLOY_SPDLOG_DIR}/include/spdlog DESTINATION include/cpp) + endif () +endif () set(SRCS device_impl.cpp @@ -46,20 +47,27 @@ target_include_directories(${PROJECT_NAME} $ # TODO: remove dependency of `json` $ - $ ) + +if (MMDEPLOY_BUILD_SDK_CXX_API) + target_include_directories(${PROJECT_NAME} PUBLIC + $) +endif () + target_link_libraries(${PROJECT_NAME} PUBLIC ${SPDLOG_LIB}) if (NOT (MSVC OR ANDROID)) target_link_libraries(${PROJECT_NAME} PUBLIC stdc++fs) endif () add_library(mmdeploy::core ALIAS ${PROJECT_NAME}) -install(DIRECTORY ${CMAKE_SOURCE_DIR}/csrc/core - DESTINATION include/cpp - FILES_MATCHING PATTERN "*.h") -install(FILES ${CMAKE_SOURCE_DIR}/third_party/outcome/outcome-experimental.hpp - DESTINATION include/cpp/core) +if (MMDEPLOY_BUILD_SDK_CXX_API) + install(DIRECTORY ${CMAKE_SOURCE_DIR}/csrc/core + DESTINATION include/cpp + FILES_MATCHING PATTERN "*.h") + install(FILES ${CMAKE_SOURCE_DIR}/third_party/outcome/outcome-experimental.hpp + DESTINATION include/cpp/core) -install(DIRECTORY ${CMAKE_SOURCE_DIR}/csrc/experimental - DESTINATION include/cpp - FILES_MATCHING PATTERN "*.h") + install(DIRECTORY ${CMAKE_SOURCE_DIR}/csrc/experimental + DESTINATION include/cpp + FILES_MATCHING PATTERN "*.h") +endif () diff --git a/csrc/core/tensor.cpp b/csrc/core/tensor.cpp index 4da340353..3376556e4 100644 --- a/csrc/core/tensor.cpp +++ b/csrc/core/tensor.cpp @@ -2,11 +2,13 @@ #include "tensor.h" +#include #include #include #include "core/utils/formatter.h" #include "logger.h" + using std::stringstream; namespace mmdeploy { diff --git a/csrc/core/utils/formatter.h b/csrc/core/utils/formatter.h index e1f748840..984a8aac8 100644 --- a/csrc/core/utils/formatter.h +++ b/csrc/core/utils/formatter.h @@ -3,9 +3,12 @@ #ifndef MMDEPLOY_SRC_UTILS_FORMATTER_H_ #define MMDEPLOY_SRC_UTILS_FORMATTER_H_ +#include #include #include "core/logger.h" +#include "core/types.h" +#include "spdlog/fmt/ostr.h" #if FMT_VERSION >= 50000 #include "spdlog/fmt/bundled/ostream.h" @@ -20,12 +23,55 @@ class Value; MMDEPLOY_API std::string format_value(const Value& value); +inline std::string to_string(PixelFormat format) { + switch (format) { + case PixelFormat::kBGR: + return "BGR"; + case PixelFormat::kRGB: + return "RGB"; + case PixelFormat::kGRAYSCALE: + return "GRAYSCALE"; + case PixelFormat::kNV12: + return "NV12"; + case PixelFormat::kNV21: + return "NV21"; + case PixelFormat::kBGRA: + return "BGRA"; + default: + return "invalid_format_enum"; + } +} + +inline std::string to_string(DataType type) { + switch (type) { + case DataType::kFLOAT: + return "FLOAT"; + case DataType::kHALF: + return "HALF"; + case DataType::kINT8: + return "INT8"; + case DataType::kINT32: + return "INT32"; + case DataType::kINT64: + return "INT64"; + default: + return "invalid_data_type_enum"; + } +} + +inline std::ostream& operator<<(std::ostream& os, PixelFormat format) { + return os << to_string(format); +} + +inline std::ostream& operator<<(std::ostream& os, DataType type) { return os << to_string(type); } + } // namespace mmdeploy namespace fmt { #if FMT_VERSION >= 50000 +// `Value` maybe an incomplete type at this point, making `operator<<` not usable template <> struct formatter { constexpr auto parse(format_parse_context& ctx) { return ctx.begin(); } @@ -37,21 +83,16 @@ struct formatter { #else -inline void format_arg(BasicFormatter &f, const char *, const mmdeploy::Value &d) { +inline void format_arg(BasicFormatter& f, const char*, const mmdeploy::Value& d) { f.writer() << mmdeploy::format_value(d); } -template >::value, bool> = true> -void format_arg(BasicFormatter &f, const char *, const T &v) { - f.writer() << (int)v; -} - template -auto format_arg(BasicFormatter &f, const char *, const T &v) +auto format_arg(BasicFormatter& f, const char*, const T& v) -> std::void_t { f.writer() << "["; bool first = true; - for (const auto &x : v) { + for (const auto& x : v) { f.writer() << (first ? "" : ", ") << fmt::format("{}", x); first = false; } @@ -59,7 +100,7 @@ auto format_arg(BasicFormatter &f, const char *, const T &v) } template -void format_tuple_impl(BasicFormatter &f, const Tuple &t, std::index_sequence) { +void format_tuple_impl(BasicFormatter& f, const Tuple& t, std::index_sequence) { constexpr int last = sizeof...(Is) - 1; f.writer() << "("; ((f.writer() << fmt::format("{}", std::get(t)) << (Is != last ? ", " : "")), ...); @@ -67,7 +108,7 @@ void format_tuple_impl(BasicFormatter &f, const Tuple &t, std::index_seque } template -void format_arg(BasicFormatter &f, const char *, const std::tuple &t) { +void format_arg(BasicFormatter& f, const char*, const std::tuple& t) { format_tuple_impl(f, t, std::index_sequence_for{}); } diff --git a/csrc/device/CMakeLists.txt b/csrc/device/CMakeLists.txt index 5cfcbf0a2..358460609 100644 --- a/csrc/device/CMakeLists.txt +++ b/csrc/device/CMakeLists.txt @@ -1,5 +1,4 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) add_subdirectory(cpu) diff --git a/csrc/device/cpu/CMakeLists.txt b/csrc/device/cpu/CMakeLists.txt index f7e7c4611..c5fa5c3c4 100644 --- a/csrc/device/cpu/CMakeLists.txt +++ b/csrc/device/cpu/CMakeLists.txt @@ -1,8 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_cpu_device) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_cpu_device) file(GLOB_RECURSE SRCS "*.cpp") diff --git a/csrc/device/cuda/CMakeLists.txt b/csrc/device/cuda/CMakeLists.txt index 7fdddd5ed..9d72a1f24 100644 --- a/csrc/device/cuda/CMakeLists.txt +++ b/csrc/device/cuda/CMakeLists.txt @@ -1,15 +1,11 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -include(${CMAKE_SOURCE_DIR}/cmake/cuda.cmake NO_POLICY_SCOPE) -project(mmdeploy_cuda_device CUDA CXX) - -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_cuda_device) set(SRCS cuda_device.cpp cuda_builtin_kernels.cu) mmdeploy_add_module(${PROJECT_NAME} "${SRCS}") target_include_directories(${PROJECT_NAME} PRIVATE ${CUDA_INCLUDE_DIRS}) -target_link_libraries(${PROJECT_NAME} PRIVATE cudart cuda) +target_link_libraries(${PROJECT_NAME} PRIVATE ${CUDA_LIBRARIES} cuda) add_library(mmdeploy::device::cuda ALIAS ${PROJECT_NAME}) diff --git a/csrc/execution/CMakeLists.txt b/csrc/execution/CMakeLists.txt index e64f9ef3d..d4dda0fd6 100644 --- a/csrc/execution/CMakeLists.txt +++ b/csrc/execution/CMakeLists.txt @@ -1,9 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) project(mmdeploy_execution) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) set(SRCS schedulers/schedulers.cpp) mmdeploy_add_module(${PROJECT_NAME} LIBRARY "${SRCS}") add_library(mmdeploy::execution ALIAS ${PROJECT_NAME}) diff --git a/csrc/graph/CMakeLists.txt b/csrc/graph/CMakeLists.txt index d4c03b5d9..3b98f8a93 100644 --- a/csrc/graph/CMakeLists.txt +++ b/csrc/graph/CMakeLists.txt @@ -1,8 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_graph) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) set(SRCS common.cpp task.cpp diff --git a/csrc/model/CMakeLists.txt b/csrc/model/CMakeLists.txt index 5df63dedb..547bcb79e 100644 --- a/csrc/model/CMakeLists.txt +++ b/csrc/model/CMakeLists.txt @@ -1,8 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(model) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(model) set(MODEL_NAMES "directory_model") if (${MMDEPLOY_ZIP_MODEL}) diff --git a/csrc/net/CMakeLists.txt b/csrc/net/CMakeLists.txt index f411abe5e..a7cd00d3d 100644 --- a/csrc/net/CMakeLists.txt +++ b/csrc/net/CMakeLists.txt @@ -1,8 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_net_module) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_net_module) if ("trt" IN_LIST MMDEPLOY_TARGET_BACKENDS) add_subdirectory(trt) diff --git a/csrc/net/ncnn/CMakeLists.txt b/csrc/net/ncnn/CMakeLists.txt index 3c0e1ff6e..ffd349f3d 100644 --- a/csrc/net/ncnn/CMakeLists.txt +++ b/csrc/net/ncnn/CMakeLists.txt @@ -1,9 +1,8 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_ncnn_net) if ("cpu" IN_LIST MMDEPLOY_TARGET_DEVICES) - include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) find_package(ncnn REQUIRED) diff --git a/csrc/net/openvino/CMakeLists.txt b/csrc/net/openvino/CMakeLists.txt index 6963739e2..b0691be09 100644 --- a/csrc/net/openvino/CMakeLists.txt +++ b/csrc/net/openvino/CMakeLists.txt @@ -1,9 +1,8 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_openvino_net) if ("cpu" IN_LIST MMDEPLOY_TARGET_DEVICES) - include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) find_package(InferenceEngine REQUIRED) mmdeploy_add_module(${PROJECT_NAME} openvino_net.cpp) diff --git a/csrc/net/ort/CMakeLists.txt b/csrc/net/ort/CMakeLists.txt index 5d4740db6..598e40477 100644 --- a/csrc/net/ort/CMakeLists.txt +++ b/csrc/net/ort/CMakeLists.txt @@ -1,11 +1,10 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_ort_net) include(${CMAKE_SOURCE_DIR}/cmake/modules/FindONNXRUNTIME.cmake) if ("cpu" IN_LIST MMDEPLOY_TARGET_DEVICES) - include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) mmdeploy_add_module(${PROJECT_NAME} ort_net.cpp) target_include_directories(${PROJECT_NAME} PRIVATE ${ONNXRUNTIME_DIR}/include) target_link_libraries(${PROJECT_NAME} PRIVATE mmdeploy_onnxruntime_ops_obj) diff --git a/csrc/net/ppl/CMakeLists.txt b/csrc/net/ppl/CMakeLists.txt index dd859f8e2..a16dd7006 100644 --- a/csrc/net/ppl/CMakeLists.txt +++ b/csrc/net/ppl/CMakeLists.txt @@ -1,8 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_pplnn_net) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) find_package(pplnn REQUIRED) mmdeploy_add_module(${PROJECT_NAME} ppl_net.cpp) diff --git a/csrc/net/trt/CMakeLists.txt b/csrc/net/trt/CMakeLists.txt index 9ceb49006..6703c7f4f 100644 --- a/csrc/net/trt/CMakeLists.txt +++ b/csrc/net/trt/CMakeLists.txt @@ -1,9 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -include(${CMAKE_SOURCE_DIR}/cmake/cuda.cmake NO_POLICY_SCOPE) + project(mmdeploy_trt_net) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) include(${CMAKE_SOURCE_DIR}/cmake/tensorrt.cmake) mmdeploy_add_module(${PROJECT_NAME} trt_net.cpp) diff --git a/csrc/preprocess/CMakeLists.txt b/csrc/preprocess/CMakeLists.txt index 503ead8f8..ffbf30d16 100644 --- a/csrc/preprocess/CMakeLists.txt +++ b/csrc/preprocess/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(mmdeploy_transform_module) add_subdirectory(transform) @@ -8,7 +8,6 @@ if ("cuda" IN_LIST MMDEPLOY_TARGET_DEVICES) add_subdirectory(cuda) endif () -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) mmdeploy_add_module(${PROJECT_NAME} transform_module.cpp) target_link_libraries(${PROJECT_NAME} PRIVATE mmdeploy::transform) add_library(mmdeploy::transform_module ALIAS ${PROJECT_NAME}) diff --git a/csrc/preprocess/cpu/CMakeLists.txt b/csrc/preprocess/cpu/CMakeLists.txt index 219f4da41..958338b73 100644 --- a/csrc/preprocess/cpu/CMakeLists.txt +++ b/csrc/preprocess/cpu/CMakeLists.txt @@ -1,9 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_cpu_transform_impl) -include(${CMAKE_SOURCE_DIR}/cmake/opencv.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_cpu_transform_impl) set(SRCS collect_impl.cpp diff --git a/csrc/preprocess/cuda/CMakeLists.txt b/csrc/preprocess/cuda/CMakeLists.txt index 1c83cf309..7ce328093 100644 --- a/csrc/preprocess/cuda/CMakeLists.txt +++ b/csrc/preprocess/cuda/CMakeLists.txt @@ -1,12 +1,9 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -include(${CMAKE_SOURCE_DIR}/cmake/cuda.cmake NO_POLICY_SCOPE) + project(mmdeploy_cuda_transform_impl CUDA CXX) find_package(pplcv REQUIRED) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) - set(SRCS crop_impl.cpp image2tensor_impl.cpp diff --git a/csrc/preprocess/transform/CMakeLists.txt b/csrc/preprocess/transform/CMakeLists.txt index 22100838e..1f931cbb9 100644 --- a/csrc/preprocess/transform/CMakeLists.txt +++ b/csrc/preprocess/transform/CMakeLists.txt @@ -1,8 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_transform) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_transform) set(SRCS collect.cpp diff --git a/csrc/utils/opencv/CMakeLists.txt b/csrc/utils/opencv/CMakeLists.txt index 6eb8bd2e9..2dafb8da6 100644 --- a/csrc/utils/opencv/CMakeLists.txt +++ b/csrc/utils/opencv/CMakeLists.txt @@ -1,9 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) -project(mmdeploy_opencv_utils) -include(${CMAKE_SOURCE_DIR}/cmake/opencv.cmake) -include(${CMAKE_SOURCE_DIR}/cmake/MMDeploy.cmake) +project(mmdeploy_opencv_utils) mmdeploy_add_library(${PROJECT_NAME} opencv_utils.cpp) @@ -13,5 +10,3 @@ target_link_libraries(${PROJECT_NAME} target_include_directories(${PROJECT_NAME} INTERFACE $) - -#export_module(${PROJECT_NAME}) diff --git a/demo/csharp/README.md b/demo/csharp/README.md index 824ef95db..e309822c9 100644 --- a/demo/csharp/README.md +++ b/demo/csharp/README.md @@ -6,7 +6,7 @@ You should build csharp api first, it will generate a nuget package, or you can **step 1.** Add runtime dll to the system path -If you built csharp api from source and didn't build static lib, you should add the built dll to your system path. The same is to opencv, spdlog, etc. +If you built csharp api from source and didn't build static lib, you should add the built dll to your system path. The same is to opencv, etc. And don't forget to install backend dependencies. Take tensorrt backend as example, you have to install cudatoolkit, cudnn and tensorrt. The version of backend dependencies that our prebuit nuget package used will be offered in release note. diff --git a/docs/en/build/android.md b/docs/en/build/android.md index c5bbb3eb1..dfc1cd946 100644 --- a/docs/en/build/android.md +++ b/docs/en/build/android.md @@ -61,20 +61,6 @@ You can skip this chapter if only interested in model converter. - - spdlog - -

-git clone -b v1.9.2 https://github.com/gabime/spdlog.git
-cd spdlog
-export SPDLOG_DIR=${PWD}
-mkdir -p build
-cd build
-cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=${SPDLOG_DIR} -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-30 ..
-make install
-
- - OpenCV
(>=3.0) @@ -159,7 +145,7 @@ make install Enable codebase's postprocess modules. It MUST be set by a semicolon separated list of codebase names. The currently supported codebases are 'mmcls', 'mmdet', 'mmedit', 'mmseg', 'mmocr'. Instead of listing them one by one, you can also pass all to enable them all, i.e., -DMMDEPLOY_CODEBASES=all - BUILD_SHARED_LIBS + MMDEPLOY_SHARED_LIBS {ON, OFF} ON Switch to build shared library or static library of MMDeploy SDK. Now you should build static library for android. Bug will be fixed soon. @@ -177,11 +163,10 @@ MMDeploy provides a recipe as shown below for building SDK with ncnn as inferenc cmake .. \ -DMMDEPLOY_BUILD_SDK=ON \ -DOpenCV_DIR=${OPENCV_ANDROID_SDK_DIR}/sdk/native/jni/abi-arm64-v8a \ - -Dspdlog_DIR=${SPDLOG_DIR}/lib/cmake/spdlog \ -Dncnn_DIR=${NCNN_DIR}/build/install/lib/cmake/ncnn \ -DMMDEPLOY_TARGET_BACKENDS=ncnn \ -DMMDEPLOY_CODEBASES=all \ - -DBUILD_SHARED_LIBS=OFF \ + -DMMDEPLOY_SHARED_LIBS=OFF \ -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \ -DANDROID_ABI=arm64-v8a \ -DANDROID_PLATFORM=android-30 \ @@ -197,7 +182,6 @@ cd ${MMDEPLOY_DIR}/build/install/example mkdir -p build && cd build cmake .. \ -DOpenCV_DIR=${OPENCV_ANDROID_SDK_DIR}/sdk/native/jni/abi-arm64-v8a \ - -Dspdlog_DIR=${SPDLOG_DIR}/lib/cmake/spdlog \ -Dncnn_DIR=${NCNN_DIR}/build/install/lib/cmake/ncnn \ -DMMDeploy_DIR=${MMDEPLOY_DIR}/build/install/lib/cmake/MMDeploy \ -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \ diff --git a/docs/en/build/linux.md b/docs/en/build/linux.md index f09fbc23c..01c63f0c5 100644 --- a/docs/en/build/linux.md +++ b/docs/en/build/linux.md @@ -101,21 +101,6 @@ You can skip this chapter if you are only interested in the model converter. - - spdlog - - On Ubuntu >=18.04, -

-sudo apt-get install libspdlog-dev
-
- On Ubuntu 16.04, -

-wget http://archive.ubuntu.com/ubuntu/pool/universe/s/spdlog/libspdlog-dev_0.16.3-1_amd64.deb
-sudo dpkg -i libspdlog-dev_0.16.3-1_amd64.deb
-
- You can also build spdlog from its source to enjoy its latest features. But be sure to open cmake option -DCMAKE_POSITION_INDEPENDENT_CODE=ON. - - OpenCV
(>=3.0) @@ -346,7 +331,7 @@ Currently, The Model Converter supports torchscript, but SDK doesn't. Enable codebase's postprocess modules. You can provide a semicolon separated list of codebase names to enable them, e.g., -DMMDEPLOY_CODEBASES="mmcls;mmdet". Or you can pass all to enable them all, i.e., -DMMDEPLOY_CODEBASES=all - BUILD_SHARED_LIBS + MMDEPLOY_SHARED_LIBS {ON, OFF} ON Switch to build shared library or static library of MMDeploy SDK diff --git a/docs/en/build/windows.md b/docs/en/build/windows.md index b79e12608..105cb8e4f 100644 --- a/docs/en/build/windows.md +++ b/docs/en/build/windows.md @@ -79,22 +79,6 @@ You can skip this chapter if you are only interested in the model converter. - - spdlog - - spdlog is a very fast, header-only/compiled, C++ logging library. You can install it like this, -

-Invoke-WebRequest -Uri https://github.com/gabime/spdlog/archive/refs/tags/v1.9.2.zip -OutFile spdlog-1.9.2.zip
-Expand-Archive spdlog-1.9.2.zip .
-cd spdlog-1.9.2
-mkdir build
-cd build
-cmake .. -G "Visual Studio 16 2019" -A x64 -T v142 -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release
-cmake --build . --target install  --config Release -- /m
-cd ../..
-
- - OpenCV
(>=3.0) @@ -274,7 +258,7 @@ $env:MMDEPLOY_DIR="$pwd" Enable codebase's postprocess modules. You can provide a semicolon separated list of codebase names to enable them. Or you can pass all to enable them all, i.e., -DMMDEPLOY_CODEBASES=all - BUILD_SHARED_LIBS + MMDEPLOY_SHARED_LIBS {ON, OFF} ON Switch to build shared library or static library of MMDeploy SDK diff --git a/docs/en/get_started.md b/docs/en/get_started.md index a151c2bb0..60e990900 100644 --- a/docs/en/get_started.md +++ b/docs/en/get_started.md @@ -154,7 +154,6 @@ make -j$(nproc) cmake -DMMDEPLOY_BUILD_SDK=ON \ -DCMAKE_CXX_COMPILER=g++-7 \ -DOpenCV_DIR=/path/to/OpenCV/lib/cmake/OpenCV \ - -Dspdlog_DIR=/path/to/spdlog/lib/cmake/spdlog \ -DONNXRUNTIME_DIR=${ONNXRUNTIME_DIR} \ -DMMDEPLOY_TARGET_BACKENDS=ort \ -DMMDEPLOY_CODEBASES=mmdet .. diff --git a/docs/zh_cn/01-how-to-build/android.md b/docs/zh_cn/01-how-to-build/android.md index 5b3f78e79..e56e4549b 100644 --- a/docs/zh_cn/01-how-to-build/android.md +++ b/docs/zh_cn/01-how-to-build/android.md @@ -61,20 +61,6 @@ MMDeploy 的交叉编译分为两步: - - spdlog - -

-git clone -b v1.9.2 https://github.com/gabime/spdlog.git
-cd spdlog
-export SPDLOG_DIR=${PWD}
-mkdir -p build
-cd build
-cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_INSTALL_PREFIX=${SPDLOG_DIR} -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-30 ..
-make install
-
- - OpenCV
(>=3.0) @@ -153,7 +139,7 @@ make install 用来设置 SDK 后处理组件,加载 OpenMMLab 算法仓库的后处理功能. 已支持的算法仓库有'mmcls','mmdet','mmedit','mmseg'和'mmocr'. 如果选择多个codebase,中间使用分号隔开. 比如, 'mmcls', 'mmdet', 'mmedit', 'mmseg', 'mmocr'. 也可以通过 all 的方式, 加载所有codebase, 即 -DMMDEPLOY_CODEBASES=all. - BUILD_SHARED_LIBS + MMDEPLOY_SHARED_LIBS {ON, OFF} ON MMDeploy SDK 的动态库的编译开关.设置 OFF 时, 编译静态库. 目前 android 端 SDK 仅支持静态库加载, 后续会进行对动态库加载的支持. @@ -172,11 +158,10 @@ make install cmake .. \ -DMMDEPLOY_BUILD_SDK=ON \ -DOpenCV_DIR=${OPENCV_ANDROID_SDK_DIR}/sdk/native/jni/abi-arm64-v8a \ - -Dspdlog_DIR=${SPDLOG_DIR}/lib/cmake/spdlog \ -Dncnn_DIR=${NCNN_DIR}/build/install/lib/cmake/ncnn \ -DMMDEPLOY_TARGET_BACKENDS=ncnn \ -DMMDEPLOY_CODEBASES=all \ - -DBUILD_SHARED_LIBS=OFF \ + -DMMDEPLOY_SHARED_LIBS=OFF \ -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \ -DANDROID_ABI=arm64-v8a \ -DANDROID_PLATFORM=android-30 \ @@ -192,7 +177,6 @@ cd ${MMDEPLOY_DIR}/build/install/example mkdir -p build && cd build cmake .. \ -DOpenCV_DIR=${OPENCV_ANDROID_SDK_DIR}/sdk/native/jni/abi-arm64-v8a \ - -Dspdlog_DIR=${SPDLOG_DIR}/lib/cmake/spdlog \ -Dncnn_DIR=${NCNN_DIR}/build/install/lib/cmake/ncnn \ -DMMDeploy_DIR=${MMDEPLOY_DIR}/build/install/lib/cmake/MMDeploy \ -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \ diff --git a/docs/zh_cn/01-how-to-build/linux-x86_64.md b/docs/zh_cn/01-how-to-build/linux-x86_64.md index f34236663..f6b625a55 100644 --- a/docs/zh_cn/01-how-to-build/linux-x86_64.md +++ b/docs/zh_cn/01-how-to-build/linux-x86_64.md @@ -93,21 +93,6 @@ pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/${cu_ve - - spdlog - - 在 Ubuntu 18.04 及以上版本 -

-sudo apt-get install libspdlog-dev
-
- 在 Ubuntu 16.04, -

-wget http://archive.ubuntu.com/ubuntu/pool/universe/s/spdlog/libspdlog-dev_0.16.3-1_amd64.deb
-sudo dpkg -i libspdlog-dev_0.16.3-1_amd64.deb
-
- 您也可以使用spdlog的源码进行编译,激活它更多的特性。但是,请务必打开 -DCMAKE_POSITION_INDEPENDENT_CODE=ON. - - OpenCV
(>=3.0) @@ -331,7 +316,7 @@ export MMDEPLOY_DIR=$(pwd) 用来设置 SDK 后处理组件,加载 OpenMMLab 算法仓库的后处理功能。如果选择多个 codebase,中间使用分号隔开。比如,-DMMDEPLOY_CODEBASES="mmcls;mmdet"。也可以通过 -DMMDEPLOY_CODEBASES=all 方式,加载所有 codebase。 - BUILD_SHARED_LIBS + MMDEPLOY_SHARED_LIBS {ON, OFF} ON MMDeploy SDK 的动态库的编译开关。设置 OFF 时,编译静态库 diff --git a/docs/zh_cn/01-how-to-build/windows.md b/docs/zh_cn/01-how-to-build/windows.md index 852931920..f23174d9b 100644 --- a/docs/zh_cn/01-how-to-build/windows.md +++ b/docs/zh_cn/01-how-to-build/windows.md @@ -76,21 +76,6 @@ pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/$env:cu - - spdlog - spdlog是一个精巧的日志管理库。请参考如下命令安装:
-

-Invoke-WebRequest -Uri https://github.com/gabime/spdlog/archive/refs/tags/v1.9.2.zip -OutFile spdlog-1.9.2.zip
-Expand-Archive spdlog-1.9.2.zip .
-cd spdlog-1.9.2
-mkdir build
-cd build
-cmake .. -G "Visual Studio 16 2019" -A x64 -T v142 -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release
-cmake --build . --target install --config Release  -- /m
-cd ../..
-
- - OpenCV @@ -261,7 +246,7 @@ $env:MMDEPLOY_DIR="$pwd" 用来设置SDK后处理组件,加载 OpenMMLab 算法仓库的后处理功能。如果选择多个 codebase,中间使用分号隔开。比如,-DMMDEPLOY_CODEBASES="mmcls;mmdet"。也可以通过 -DMMDEPLOY_CODEBASES=all 方式,加载所有 codebase。 - BUILD_SHARED_LIBS + MMDEPLOY_SHARED_LIBS {ON, OFF} ON 动态库的编译开关。设置OFF时,编译静态库 diff --git a/docs/zh_cn/get_started.md b/docs/zh_cn/get_started.md index 030edffa3..6e325e42a 100644 --- a/docs/zh_cn/get_started.md +++ b/docs/zh_cn/get_started.md @@ -157,7 +157,6 @@ make -j$(nproc) cmake -DMMDEPLOY_BUILD_SDK=ON \ -DCMAKE_CXX_COMPILER=g++-7 \ -DOpenCV_DIR=/path/to/OpenCV/lib/cmake/OpenCV \ - -Dspdlog_DIR=/path/to/spdlog/lib/cmake/spdlog \ -DONNXRUNTIME_DIR=${ONNXRUNTIME_DIR} \ -DMMDEPLOY_TARGET_BACKENDS=ort \ -DMMDEPLOY_CODEBASES=mmdet .. diff --git a/tests/test_csrc/CMakeLists.txt b/tests/test_csrc/CMakeLists.txt index d7026ffec..8f0398709 100644 --- a/tests/test_csrc/CMakeLists.txt +++ b/tests/test_csrc/CMakeLists.txt @@ -1,13 +1,7 @@ # Copyright (c) OpenMMLab. All rights reserved. -cmake_minimum_required(VERSION 3.14) + project(tests) -if ("cuda" IN_LIST MMDEPLOY_TARGET_DEVICES) - include(${CMAKE_SOURCE_DIR}/cmake/cuda.cmake) -endif() -include(${CMAKE_SOURCE_DIR}/cmake/opencv.cmake) - - set(TC_SRCS test_main.cpp) aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/archive ARCHIVE_TC) diff --git a/third_party/spdlog b/third_party/spdlog new file mode 160000 index 000000000..9e8e52c04 --- /dev/null +++ b/third_party/spdlog @@ -0,0 +1 @@ +Subproject commit 9e8e52c0488706986c76eeb4225286ac02fb1ee9