Skip to content

Commit bb00e07

Browse files
jiangjiajunDefTruthfelixhjhChaoII
authored
[Model] Integrate FlyCV image processing library (#375)
* Add falcon cmake * Update CMakeLists.txt * Add implementation for more preprocessors * Add more implementation * Add more implementations by flycv * Fix some name * fix some bug * ready to test * add fuse * fix fuse problem * add debug code * add debug * [Android] integrate flycv to Android (#459) * [Android] integrate flycv into Andorid * Falconcv (#27) * [Bug Fix ]Update ppseg visualize python api && demo (#454) Update ppseg visualize python api && demo * [Model] update pptracking letterboxresize and add some comment (#438) * add override mark * delete some * recovery * recovery * add tracking * add tracking py_bind and example * add pptracking * add pptracking * iomanip head file * add opencv_video lib * add python libs package Signed-off-by: ChaoII <849453582@qq.com> * complete comments Signed-off-by: ChaoII <849453582@qq.com> * add jdeTracker_ member variable Signed-off-by: ChaoII <849453582@qq.com> * add 'FASTDEPLOY_DECL' macro Signed-off-by: ChaoII <849453582@qq.com> * remove kwargs params Signed-off-by: ChaoII <849453582@qq.com> * [Doc]update pptracking docs * delete 'ENABLE_PADDLE_FRONTEND' switch * add pptracking unit test * update pptracking unit test Signed-off-by: ChaoII <849453582@qq.com> * modify test video file path and remove trt test * update unit test model url * remove 'FASTDEPLOY_DECL' macro Signed-off-by: ChaoII <849453582@qq.com> * fix build python packages about pptracking on win32 Signed-off-by: ChaoII <849453582@qq.com> * update comment Signed-off-by: ChaoII <849453582@qq.com> * add pptracking model explain Signed-off-by: ChaoII <849453582@qq.com> Signed-off-by: ChaoII <849453582@qq.com> Co-authored-by: Jason <jiangjiajun@baidu.com> Signed-off-by: ChaoII <849453582@qq.com> Co-authored-by: huangjianhui <852142024@qq.com> Co-authored-by: ChaoII <849453582@qq.com> Co-authored-by: Jason <jiangjiajun@baidu.com> * [cmake] optimize examples CMakeLists.txt Signed-off-by: ChaoII <849453582@qq.com> Co-authored-by: huangjianhui <852142024@qq.com> Co-authored-by: ChaoII <849453582@qq.com> Co-authored-by: Jason <jiangjiajun@baidu.com> * remove debug log * remove function * remove function Signed-off-by: ChaoII <849453582@qq.com> Co-authored-by: DefTruth <31974251+DefTruth@users.noreply.github.com> Co-authored-by: huangjianhui <852142024@qq.com> Co-authored-by: ChaoII <849453582@qq.com>
1 parent c76992c commit bb00e07

68 files changed

Lines changed: 2571 additions & 106 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ option(ENABLE_POROS_BACKEND "Whether to enable poros backend." OFF)
6060
option(ENABLE_OPENVINO_BACKEND "Whether to enable openvino backend." OFF)
6161
option(ENABLE_LITE_BACKEND "Whether to enable paddle lite backend." OFF)
6262
option(ENABLE_VISION "Whether to enable vision models usage." OFF)
63-
option(ENABLE_VISION_VISUALIZE "Whether to enable visualize vision model result toolbox." ON)
6463
option(ENABLE_TEXT "Whether to enable text models usage." OFF)
64+
option(ENABLE_FLYCV "Whether to enable flycv to boost image preprocess." OFF)
6565
option(WITH_TESTING "Whether to compile with unittest." OFF)
6666
############################# Options for Android cross compiling #########################
6767
option(WITH_OPENCV_STATIC "Use OpenCV static lib for Android." OFF)
@@ -136,16 +136,6 @@ set(HEAD_DIR "${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}")
136136
include_directories(${HEAD_DIR})
137137
include_directories(${CMAKE_CURRENT_BINARY_DIR})
138138

139-
if(BUILD_EXAMPLES AND EXISTS ${PROJECT_SOURCE_DIR}/examples)
140-
if(ENABLE_VISION)
141-
# ENABLE_VISION_VISUALIZE must be ON if enable vision examples.
142-
message(STATUS "Found BUILD_EXAMPLES and ENABLE_VISION ON, so, force ENABLE_VISION_VISUALIZE ON")
143-
set(ENABLE_VISION_VISUALIZE ON CACHE BOOL "force to enable visualize vision model result toolbox" FORCE)
144-
else()
145-
message(WARNING "BUILD_EXAMPLES is ON, but found ENABLE_VISION OFF, will skip vision examples.")
146-
endif()
147-
endif()
148-
149139
if(ANDROID OR IOS)
150140
if(ENABLE_ORT_BACKEND)
151141
message(FATAL_ERROR "Not support ONNXRuntime backend for Andorid/IOS now. Please set ENABLE_ORT_BACKEND=OFF.")
@@ -382,6 +372,8 @@ endif()
382372

383373
if(ENABLE_VISION)
384374
add_definitions(-DENABLE_VISION)
375+
# set(ENABLE_VISION_VISUALIZE ON)
376+
add_definitions(-DENABLE_VISION_VISUALIZE)
385377
if(ENABLE_OPENCV_CUDA)
386378
if(NOT WITH_GPU)
387379
message(FATAL_ERROR "ENABLE_OPENCV_CUDA is available on Linux and WITH_GPU=ON, but now WITH_GPU=OFF.")
@@ -402,13 +394,10 @@ if(ENABLE_VISION)
402394
include_directories(${PROJECT_SOURCE_DIR}/third_party/yaml-cpp/include)
403395
include(${PROJECT_SOURCE_DIR}/cmake/opencv.cmake)
404396

405-
if(ENABLE_VISION_VISUALIZE)
406-
add_definitions(-DENABLE_VISION_VISUALIZE)
407-
endif()
408-
else()
409-
if(ENABLE_VISION_VISUALIZE)
410-
message("While ENABLE_VISION=OFF, will force ENABLE_VISION_VISUALIZE=OFF.")
411-
set(ENABLE_VISION_VISUALIZE OFF)
397+
if(ENABLE_FLYCV)
398+
add_definitions(-DENABLE_FLYCV)
399+
include(${PROJECT_SOURCE_DIR}/cmake/flycv.cmake)
400+
list(APPEND DEPEND_LIBS external_flycv)
412401
endif()
413402
endif()
414403

FastDeploy.cmake.in

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ set(POROS_VERSION @POROS_VERSION@)
1010
set(ENABLE_TRT_BACKEND @ENABLE_TRT_BACKEND@)
1111
set(ENABLE_PADDLE_FRONTEND @ENABLE_PADDLE_FRONTEND@)
1212
set(ENABLE_VISION @ENABLE_VISION@)
13+
set(ENABLE_FLYCV @ENABLE_FLYCV@)
1314
set(ENABLE_TEXT @ENABLE_TEXT@)
1415
set(BUILD_ON_JETSON @BUILD_ON_JETSON@)
1516
set(PADDLEINFERENCE_VERSION @PADDLEINFERENCE_VERSION@)
@@ -185,6 +186,20 @@ if(ENABLE_VISION)
185186
list(APPEND FASTDEPLOY_INCS ${OpenCV_INCLUDE_DIRS})
186187
list(APPEND FASTDEPLOY_LIBS ${OpenCV_LIBS})
187188
endif()
189+
190+
if(ENABLE_FLYCV)
191+
include_directories(${CMAKE_CURRENT_LIST_DIR}/third_libs/install/flycv/include)
192+
set(FLYCV_LIB_DIR ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/flycv/lib)
193+
if(ANDROID)
194+
add_library(flycv_shared STATIC IMPORTED GLOBAL)
195+
set_property(TARGET flycv_shared PROPERTY IMPORTED_LOCATION ${FLYCV_LIB_DIR}/${ANDROID_ABI}/libflycv_shared.so)
196+
list(APPEND FASTDEPLOY_LIBS flycv_shared)
197+
else()
198+
find_library(FLYCV_LIB flycv_shared ${FLYCV_LIB_DIR} NO_DEFAULT_PATH)
199+
list(APPEND FASTDEPLOY_LIBS ${FLYCV_LIB})
200+
endif()
201+
endif()
202+
188203
endif()
189204

190205
if (ENABLE_TEXT)

cmake/flycv.cmake

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
include(ExternalProject)
15+
16+
set(FLYCV_PROJECT "extern_flycv")
17+
set(FLYCV_PREFIX_DIR ${THIRD_PARTY_PATH}/flycv)
18+
set(FLYCV_SOURCE_DIR
19+
${THIRD_PARTY_PATH}/flycv/src/${FLYCV_PROJECT})
20+
set(FLYCV_INSTALL_DIR ${THIRD_PARTY_PATH}/install/flycv)
21+
set(FLYCV_INC_DIR
22+
"${FLYCV_INSTALL_DIR}/include"
23+
CACHE PATH "flycv include directory." FORCE)
24+
if(ANDROID)
25+
set(FLYCV_LIB_DIR
26+
"${FLYCV_INSTALL_DIR}/lib/${ANDROID_ABI}"
27+
CACHE PATH "flycv lib directory." FORCE)
28+
else()
29+
set(FLYCV_LIB_DIR
30+
"${FLYCV_INSTALL_DIR}/lib/"
31+
CACHE PATH "flycv lib directory." FORCE)
32+
endif()
33+
set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}"
34+
"${FLYCV_LIB_DIR}")
35+
36+
include_directories(${FLYCV_INC_DIR})
37+
38+
# ABI check
39+
if(ANDROID)
40+
if((NOT ANDROID_ABI MATCHES "armeabi-v7a") AND (NOT ANDROID_ABI MATCHES "arm64-v8a"))
41+
message(FATAL_ERROR "FastDeploy with FlyCV only support armeabi-v7a, arm64-v8a now.")
42+
endif()
43+
if(NOT ANDROID_TOOLCHAIN MATCHES "clang")
44+
message(FATAL_ERROR "Currently, only support clang toolchain while cross compiling FastDeploy for Android with FlyCV, but found ${ANDROID_TOOLCHAIN}.")
45+
endif()
46+
endif()
47+
48+
if(WIN32)
49+
set(FLYCV_COMPILE_LIB
50+
"${FLYCV_INSTALL_DIR}/lib/flycv.lib"
51+
CACHE FILEPATH "flycv compile library." FORCE)
52+
elseif(APPLE)
53+
set(FLYCV_COMPILE_LIB
54+
"${FLYCV_INSTALL_DIR}/lib/libflycv.dylib"
55+
CACHE FILEPATH "flycv compile library." FORCE)
56+
elseif(ANDROID)
57+
set(FLYCV_COMPILE_LIB
58+
"${FLYCV_INSTALL_DIR}/lib/${ANDROID_ABI}/libflycv_shared.so"
59+
CACHE FILEPATH "flycv compile library." FORCE)
60+
else()
61+
set(FLYCV_COMPILE_LIB
62+
"${FLYCV_INSTALL_DIR}/lib/libflycv_shared.so"
63+
CACHE FILEPATH "flycv compile library." FORCE)
64+
endif(WIN32)
65+
66+
set(FLYCV_URL_BASE "https://bj.bcebos.com/fastdeploy/third_libs/")
67+
set(FLYCV_VERSION "1.0.1025")
68+
if(WIN32)
69+
message(FATAL_ERROR "FlyCV is not supported on Windows now.")
70+
set(FLYCV_FILE "flycv-win-x64-${FLYCV_VERSION}.zip")
71+
elseif(APPLE)
72+
message(FATAL_ERROR "FlyCV is not supported on Mac OSX now.")
73+
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm64")
74+
set(FLYCV_FILE "flycv-osx-arm64-${FLYCV_VERSION}.tgz")
75+
else()
76+
set(FLYCV_FILE "flycv-osx-x86_64-${FLYCV_VERSION}.tgz")
77+
endif()
78+
elseif(ANDROID)
79+
set(FLYCV_FILE "flycv-android-${FLYCV_VERSION}.tgz")
80+
else()
81+
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
82+
set(FLYCV_FILE "flycv-linux-aarch64-${FLYCV_VERSION}.tgz")
83+
else()
84+
message(FATAL_ERROR "FlyCV is not supported on Linux x64 now.")
85+
set(FLYCV_FILE "flycv-linux-x64-${FLYCV_VERSION}.tgz")
86+
endif()
87+
endif()
88+
set(FLYCV_URL "${FLYCV_URL_BASE}${FLYCV_FILE}")
89+
90+
if(ANDROID)
91+
ExternalProject_Add(
92+
${FLYCV_PROJECT}
93+
${EXTERNAL_PROJECT_LOG_ARGS}
94+
URL ${FLYCV_URL}
95+
PREFIX ${FLYCV_PREFIX_DIR}
96+
DOWNLOAD_NO_PROGRESS 1
97+
CONFIGURE_COMMAND ""
98+
BUILD_COMMAND ""
99+
UPDATE_COMMAND ""
100+
INSTALL_COMMAND
101+
${CMAKE_COMMAND} -E remove_directory ${FLYCV_INSTALL_DIR} &&
102+
${CMAKE_COMMAND} -E make_directory ${FLYCV_INSTALL_DIR} &&
103+
${CMAKE_COMMAND} -E make_directory ${FLYCV_INSTALL_DIR}/lib &&
104+
${CMAKE_COMMAND} -E rename ${FLYCV_SOURCE_DIR}/lib/${ANDROID_ABI}
105+
${FLYCV_LIB_DIR} && ${CMAKE_COMMAND} -E copy_directory
106+
${FLYCV_SOURCE_DIR}/include ${FLYCV_INC_DIR}
107+
BUILD_BYPRODUCTS ${FLYCV_COMPILE_LIB})
108+
else()
109+
ExternalProject_Add(
110+
${FLYCV_PROJECT}
111+
${EXTERNAL_PROJECT_LOG_ARGS}
112+
URL ${FLYCV_URL}
113+
PREFIX ${FLYCV_PREFIX_DIR}
114+
DOWNLOAD_NO_PROGRESS 1
115+
CONFIGURE_COMMAND ""
116+
BUILD_COMMAND ""
117+
UPDATE_COMMAND ""
118+
INSTALL_COMMAND
119+
${CMAKE_COMMAND} -E remove_directory ${FLYCV_INSTALL_DIR} &&
120+
${CMAKE_COMMAND} -E make_directory ${FLYCV_INSTALL_DIR} &&
121+
${CMAKE_COMMAND} -E rename ${FLYCV_SOURCE_DIR}/lib/
122+
${FLYCV_LIB_DIR} && ${CMAKE_COMMAND} -E copy_directory
123+
${FLYCV_SOURCE_DIR}/include ${FLYCV_INC_DIR}
124+
BUILD_BYPRODUCTS ${FLYCV_COMPILE_LIB})
125+
endif()
126+
127+
add_library(external_flycv STATIC IMPORTED GLOBAL)
128+
set_property(TARGET external_flycv PROPERTY IMPORTED_LOCATION
129+
${FLYCV_COMPILE_LIB})
130+
add_dependencies(external_flycv ${FLYCV_PROJECT})

cmake/opencv.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ else()
184184
if (WIN32)
185185
set(OpenCV_DIR ${OpenCV_DIR}/build)
186186
endif()
187-
find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR})
187+
find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR} NO_DEFAULT_PATH)
188188
include_directories(${OpenCV_INCLUDE_DIRS})
189189
list(APPEND DEPEND_LIBS opencv_core opencv_video opencv_highgui opencv_imgproc opencv_imgcodecs)
190190
endif()

cmake/paddlelite.cmake

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,15 @@ set(PADDLELITE_INSTALL_DIR ${THIRD_PARTY_PATH}/install/${PADDLELITE_FILENAME})
2323
set(PADDLELITE_INC_DIR
2424
"${PADDLELITE_INSTALL_DIR}/include"
2525
CACHE PATH "paddlelite include directory." FORCE)
26-
set(PADDLELITE_LIB_DIR
27-
"${PADDLELITE_INSTALL_DIR}/lib/${ANDROID_ABI}"
28-
CACHE PATH "paddlelite lib directory." FORCE)
26+
if(ANDROID)
27+
set(PADDLELITE_LIB_DIR
28+
"${PADDLELITE_INSTALL_DIR}/lib/${ANDROID_ABI}"
29+
CACHE PATH "paddlelite lib directory." FORCE)
30+
else()
31+
set(PADDLELITE_LIB_DIR
32+
"${PADDLELITE_INSTALL_DIR}/lib/"
33+
CACHE PATH "paddlelite lib directory." FORCE)
34+
endif()
2935
set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" "${PADDLELITE_LIB_DIR}")
3036

3137
set(PADDLELITE_URL_PREFIX "https://bj.bcebos.com/fastdeploy/third_libs")

examples/CMakeLists.txt

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ function(config_fastdeploy_executable_link_flags TARGET_NAME)
3737
endif()
3838
endfunction()
3939

40+
# Usage: add_fastdeploy_executable_cc_files(xxx_var vision detection)
41+
function(add_fastdeploy_executable_cc_files CC_FILES_VAR FIELD SUB_FIELD)
42+
file(GLOB_RECURSE _EXAMPLE_SRCS ${PROJECT_SOURCE_DIR}/examples/${FIELD}/${SUB_FIELD}/*/cpp/*.cc)
43+
set(${CC_FILES_VAR} ${_EXAMPLE_SRCS} PARENT_SCOPE)
44+
endfunction()
45+
4046
set(EXAMPLES_NUM 0)
4147
function(add_fastdeploy_executable FIELD CC_FILE)
4248
# temp target name/file var in function scope
@@ -66,15 +72,25 @@ endfunction()
6672

6773
# vision examples
6874
if(BUILD_EXAMPLES AND ENABLE_VISION)
69-
if(NOT ENABLE_VISION_VISUALIZE)
70-
message(FATAL_ERROR "ENABLE_VISION_VISUALIZE must be ON while BUILD_EXAMPLES and ENABLE_VISION both ON.")
71-
endif()
7275
if(EXISTS ${PROJECT_SOURCE_DIR}/examples/vision)
7376
message(STATUS "")
7477
message(STATUS "*************FastDeploy Vision Examples Summary**********")
75-
file(GLOB_RECURSE ALL_VISION_EXAMPLE_SRCS ${PROJECT_SOURCE_DIR}/examples/vision/*/*/cpp/*.cc)
76-
foreach(_CC_FILE ${ALL_VISION_EXAMPLE_SRCS})
77-
add_fastdeploy_executable(vision ${_CC_FILE})
78+
set(ALL_VISION_SUD_FIELDS classification
79+
detection
80+
facedet
81+
faceid
82+
keypointdetection
83+
matting
84+
ocr
85+
segmentation)
86+
if(NOT ANDROID)
87+
list(APPEND ALL_VISION_SUD_FIELDS tracking)
88+
endif()
89+
foreach(_SUB_FIELD ${ALL_VISION_SUD_FIELDS})
90+
add_fastdeploy_executable_cc_files(_SUB_CC_FILES vision ${_SUB_FIELD})
91+
foreach(_CC_FILE ${_SUB_CC_FILES})
92+
add_fastdeploy_executable(vision ${_CC_FILE})
93+
endforeach()
7894
endforeach()
7995
message(STATUS " [FastDeploy Executable Path] : ${EXECUTABLE_OUTPUT_PATH}")
8096
endif()

fastdeploy/core/config.h.in

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@
4949
#cmakedefine ENABLE_VISION
5050
#endif
5151

52-
#ifndef ENABLE_FALCONCV
53-
#cmakedefine ENABLE_FALCONCV
52+
#ifndef ENABLE_FLYCV
53+
#cmakedefine ENABLE_FLYCV
5454
#endif
5555

5656
#ifndef ENABLE_TEXT
@@ -61,8 +61,10 @@
6161
#cmakedefine ENABLE_OPENCV_CUDA
6262
#endif
6363

64+
#ifdef ENABLE_VISION
6465
#ifndef ENABLE_VISION_VISUALIZE
65-
#cmakedefine ENABLE_VISION_VISUALIZE
66+
#define ENABLE_VISION_VISUALIZE
67+
#endif
6668
#endif
6769

6870
#ifndef ENABLE_FDTENSOR_FUNC

fastdeploy/vision/common/processors/base.cc

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,39 @@ bool Processor::operator()(Mat* mat, ProcLib lib) {
2828
target = default_lib;
2929
}
3030

31-
bool ret = ImplByOpenCV(mat);
32-
return ret;
31+
if (target == ProcLib::FLYCV) {
32+
#ifdef ENABLE_FLYCV
33+
if (mat->mat_type != ProcLib::FLYCV) {
34+
if (mat->layout != Layout::HWC) {
35+
FDERROR << "Cannot convert cv::Mat to fcv::Mat while layout is not HWC." << std::endl;
36+
}
37+
fcv::Mat fcv_mat = ConvertOpenCVMatToFalconCV(*(mat->GetOpenCVMat()));
38+
mat->SetMat(fcv_mat);
39+
}
40+
return ImplByFalconCV(mat);
41+
#else
42+
FDASSERT(false, "FastDeploy didn't compile with FalconCV.");
43+
#endif
44+
}
45+
return ImplByOpenCV(mat);
46+
}
47+
48+
void EnableFlyCV() {
49+
#ifdef ENABLE_FLYCV
50+
Processor::default_lib = ProcLib::FLYCV;
51+
FDINFO << "Will change to use image processing library "
52+
<< Processor::default_lib << std::endl;
53+
#else
54+
FDWARNING << "FastDeploy didn't compile with FlyCV, "
55+
"will fallback to use OpenCV instead."
56+
<< std::endl;
57+
#endif
58+
}
59+
60+
void DisableFlyCV() {
61+
Processor::default_lib = ProcLib::OPENCV;
62+
FDINFO << "Will change to use image processing library "
63+
<< Processor::default_lib << std::endl;
3364
}
3465

3566
} // namespace vision

fastdeploy/vision/common/processors/base.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,14 @@
2222
namespace fastdeploy {
2323
namespace vision {
2424

25-
class Processor {
25+
/*! @brief Enable using FlyCV to process image while deploy vision models. Currently, FlyCV in only available on ARM(Linux aarch64/Android), so will fallback to using OpenCV in other platform
26+
*/
27+
FASTDEPLOY_DECL void EnableFlyCV();
28+
29+
/// Disable using FlyCV to process image while deploy vision models.
30+
FASTDEPLOY_DECL void DisableFlyCV();
31+
32+
class FASTDEPLOY_DECL Processor {
2633
public:
2734
// default_lib has the highest priority
2835
// all the function in `processor` will force to use

0 commit comments

Comments
 (0)