diff --git a/CMakeLists.txt b/CMakeLists.txt index 5aef0b56e..8a57c2a9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,6 +71,13 @@ if(WIN32) endif() endif() +if(WIN32 AND ENABLE_VISION) + add_definitions(-DYAML_CPP_DLL) + set(YAML_BUILD_SHARED_LIBS ON) + set(YAML_CPP_INSTALL ON) + set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) +endif() + if(ENABLE_DEBUG) add_definitions(-DFASTDEPLOY_DEBUG) endif() @@ -180,6 +187,7 @@ if(ENABLE_VISION) list(APPEND ALL_DEPLOY_SRCS ${DEPLOY_VISION_SRCS}) include_directories(${PROJECT_SOURCE_DIR}/third_party/yaml-cpp/include) include(external/opencv.cmake) + list(APPEND DEPEND_LIBS ${OpenCV_LIBS}) if(ENABLE_VISION_VISUALIZE) add_definitions(-DENABLE_VISION_VISUALIZE) @@ -207,7 +215,6 @@ set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS_RELEASE -s) file(READ "${PROJECT_SOURCE_DIR}/VERSION_NUMBER" FASTDEPLOY_VERSION) string(STRIP "${FASTDEPLOY_VERSION}" FASTDEPLOY_VERSION) if (APPLE) -# set_target_properties(fastdeploy PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") set_target_properties(${LIBRARY_NAME} PROPERTIES COMPILE_FLAGS "-fvisibility=hidden") elseif(MSVC) else() @@ -221,6 +228,10 @@ endif() # list(APPEND DEPEND_LIBS OpenMP::OpenMP_CXX) #endif() set_target_properties(${LIBRARY_NAME} PROPERTIES VERSION ${FASTDEPLOY_VERSION}) +if(MSVC) + # disable warnings for dll export + target_compile_options(${LIBRARY_NAME} PRIVATE /wd4251) +endif() target_link_libraries(${LIBRARY_NAME} ${DEPEND_LIBS}) # add examples after prepare include paths for third-parties @@ -232,11 +243,19 @@ endif() include(external/summary.cmake) fastdeploy_summary() - -install( - TARGETS ${LIBRARY_NAME} - LIBRARY DESTINATION lib -) +if(WIN32) + install( + TARGETS ${LIBRARY_NAME} + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + RUNTIME DESTINATION lib + ) +else() + install( + TARGETS ${LIBRARY_NAME} + LIBRARY DESTINATION lib + ) +endif() install( DIRECTORY ${PROJECT_SOURCE_DIR}/${CSRCS_DIR_NAME}/fastdeploy DESTINATION ${CMAKE_INSTALL_PREFIX}/include diff --git a/FastDeploy.cmake.in b/FastDeploy.cmake.in index ccf2a574b..531b6b85a 100644 --- a/FastDeploy.cmake.in +++ b/FastDeploy.cmake.in @@ -52,13 +52,6 @@ if(WITH_GPU) list(APPEND FASTDEPLOY_LIBS ${CUDA_LIB}) if (ENABLE_TRT_BACKEND) -# if (NOT TRT_DIRECTORY) -# message(FATAL_ERROR "[FastDeploy] Please define TRT_DIRECTORY, e.g -DTRT_DIRECTORY=/usr/downloads/TensorRT-8.4.1.0") -# endif() -# find_library(TRT_INFER_LIB nvinfer ${TRT_DIRECTORY}/lib) -# find_library(TRT_ONNX_LIB nvonnxparser ${TRT_DIRECTORY}/lib) -# find_library(TRT_CAFFE_LIB nvcaffe_parser ${TRT_DIRECTORY}/lib) -# find_library(TRT_PLUGIN_LIB nvinfer_plugin ${TRT_DIRECTORY}/lib) find_library(TRT_INFER_LIB nvinfer ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/tensorrt/lib) find_library(TRT_ONNX_LIB nvonnxparser ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/tensorrt/lib) find_library(TRT_CAFFE_LIB nvcaffe_parser ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/tensorrt/lib) @@ -68,18 +61,25 @@ if(WITH_GPU) endif() if(ENABLE_VISION) - find_library(OPENCV_CORE_LIB opencv_core ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) - find_library(OPENCV_HIGHGUI_LIB opencv_highgui ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) - find_library(OPENCV_IMGPROC_LIB opencv_imgproc ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) - find_library(OPENCV_IMGCODESC_LIB opencv_imgcodecs ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) - list(APPEND FASTDEPLOY_LIBS ${OPENCV_CORE_LIB} ${OPENCV_HIGHGUI_LIB} ${OPENCV_IMGPROC_LIB} ${OPENCV_IMGCODESC_LIB}) - list(APPEND FASTDEPLOY_INCS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/include) + if(WIN32) + set(OpenCV_DIR ${CMAKE_CURRENT_LIST_DIR}/install/opencv-win-x64-3.4.16/build) + find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR}) + list(APPEND FASTDEPLOY_INCS ${OpenCV_INCLUDE_DIRS}) + list(APPEND FASTDEPLOY_LIBS ${OpenCV_LIBS}) + else() + find_library(OPENCV_CORE_LIB opencv_core ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) + find_library(OPENCV_HIGHGUI_LIB opencv_highgui ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) + find_library(OPENCV_IMGPROC_LIB opencv_imgproc ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) + find_library(OPENCV_IMGCODESC_LIB opencv_imgcodecs ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) + list(APPEND FASTDEPLOY_LIBS ${OPENCV_CORE_LIB} ${OPENCV_HIGHGUI_LIB} ${OPENCV_IMGPROC_LIB} ${OPENCV_IMGCODESC_LIB}) + list(APPEND FASTDEPLOY_INCS ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/include) - if(ENABLE_OPENCV_CUDA) - find_library(OPENCV_CUDAARITHM_LIB opencv_core ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) - find_library(OPENCV_CUDAIMGPROC_LIB opencv_core ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) - find_library(OPENCV_CUDAWARPING_LIB opencv_core ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) - list(APPEND FASTDEPLOY_LIBS ${OPENCV_CUDAARITHM_LIB} ${OPENCV_CUDAIMGPROC_LIB} ${OPENCV_CUDAWARPING_LIB}) + if(ENABLE_OPENCV_CUDA) + find_library(OPENCV_CUDAARITHM_LIB opencv_core ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) + find_library(OPENCV_CUDAIMGPROC_LIB opencv_core ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) + find_library(OPENCV_CUDAWARPING_LIB opencv_core ${CMAKE_CURRENT_LIST_DIR}/third_libs/install/opencv/lib) + list(APPEND FASTDEPLOY_LIBS ${OPENCV_CUDAARITHM_LIB} ${OPENCV_CUDAIMGPROC_LIB} ${OPENCV_CUDAWARPING_LIB}) + endif() endif() endif() diff --git a/external/opencv.cmake b/external/opencv.cmake index 6762e0640..975e99742 100644 --- a/external/opencv.cmake +++ b/external/opencv.cmake @@ -12,8 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. + +set(OPENCV_INSTALL_DIR ${THIRD_PARTY_PATH}/install/) + if(WIN32) + set(OPENCV_URL https://bj.bcebos.com/paddle2onnx/libs/opencv-win-x64-3.4.16.zip) + download_and_decompress(${OPENCV_URL} ${CMAKE_CURRENT_BINARY_DIR}/opencv-win-x64-3.4.16.zip ${THIRD_PARTY_PATH}/install/) + set(OpenCV_DIR ${THIRD_PARTY_PATH}/install/opencv-win-x64-3.4.16/build) find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR}) + include_directories(${OpenCV_INCLUDE_DIRS}) list(APPEND DEPEND_LIBS ${OpenCV_LIBS}) else() diff --git a/external/utils.cmake b/external/utils.cmake index f5d697204..1a203ee96 100644 --- a/external/utils.cmake +++ b/external/utils.cmake @@ -16,8 +16,8 @@ endfunction() function(download_and_decompress url filename decompress_dir) if(NOT EXISTS ${filename}) - message("Downloading file from ${url} ...") - file(DOWNLOAD ${url} "${filename}.tmp" SHOW_PROGRESS) + message("Downloading file from ${url} to ${filename} ...") + file(DOWNLOAD ${url} "${filename}.tmp") file(RENAME "${filename}.tmp" ${filename}) endif() if(NOT EXISTS ${decompress_dir}) diff --git a/third_party/yaml-cpp/CMakeLists.txt b/third_party/yaml-cpp/CMakeLists.txt index 94771d7cd..ffd18b316 100644 --- a/third_party/yaml-cpp/CMakeLists.txt +++ b/third_party/yaml-cpp/CMakeLists.txt @@ -168,20 +168,12 @@ configure_file(yaml-cpp.pc.in yaml-cpp.pc @ONLY) if (YAML_CPP_INSTALL) install(TARGETS yaml-cpp EXPORT yaml-cpp-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install/yaml-cpp/lib + LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install/yaml-cpp/lib + ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install/yaml-cpp/lib) install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + DESTINATION ${CMAKE_INSTALL_PREFIX}/third_libs/install/yaml-cpp/include FILES_MATCHING PATTERN "*.h") - install(EXPORT yaml-cpp-targets - DESTINATION "${CONFIG_EXPORT_DIR}") - install(FILES - "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" - "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" - DESTINATION "${CONFIG_EXPORT_DIR}") - install(FILES "${PROJECT_BINARY_DIR}/yaml-cpp.pc" - DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig) endif() unset(CONFIG_EXPORT_DIR)