From e2d40e2ed5994dfa5c950f6558433dffcdb6e55b Mon Sep 17 00:00:00 2001 From: shxyke Date: Mon, 5 Dec 2022 09:21:01 +0000 Subject: [PATCH] feat: Download libraries with CMake --- CMakeLists.txt | 24 +++++----------------- cmake/fastdeploy.cmake | 41 ++++++++++++++++++++++++++++++++++++++ cmake/opencv.cmake | 45 ++++++++++++++++++++++++++++++++++++++++++ cmake/utils.cmake | 12 +++++++++++ 4 files changed, 103 insertions(+), 19 deletions(-) create mode 100644 cmake/fastdeploy.cmake create mode 100644 cmake/opencv.cmake create mode 100644 cmake/utils.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index f261b09779..0a813413a7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,8 @@ option(INSTALL_THIRD_LIBS "install third party libraries" ON) option(MAA_DEPS_PATH "path to maa dependencies" "") set(CMAKE_INSTALL_RPATH "$ORIGIN/") +set(THIRD_PARTY_PATH ${CMAKE_CURRENT_BINARY_DIR}/third_libs) +include(${PROJECT_SOURCE_DIR}/cmake/utils.cmake) if (APPLE) include("${PROJECT_SOURCE_DIR}/cmake/macos.cmake") @@ -69,27 +71,11 @@ else () find_package(OpenCV REQUIRED PATHS ${MAA_DEPS_PATH}) target_link_libraries(MaaCore ${OpenCV_LIBS} ${FastDeploy_LIBS}) else () - find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR}) - target_include_directories(MaaCore PRIVATE ${OpenCV_INCLUDE_DIRS}) - target_link_libraries(MaaCore ${OpenCV_LIBS}) - - set(OPENCV_DIRECTORY ${OpenCV_INSTALL_PATH}) - include(${FASTDEPLOY_INSTALL_DIR}/FastDeploy.cmake) - include_directories(${FASTDEPLOY_INCS}) - - target_link_libraries(MaaCore ${FDLIB}) - target_link_libraries(MaaCore ${PADDLE2ONNX_LIB}) - target_link_libraries(MaaCore ${ORT_LIB}) + include(${PROJECT_SOURCE_DIR}/cmake/opencv.cmake) + include(${PROJECT_SOURCE_DIR}/cmake/fastdeploy.cmake) + target_link_libraries(MaaCore ${DEPEND_LIBS}) install(TARGETS MaaCore DESTINATION .) - if (INSTALL_THIRD_LIBS) - install(DIRECTORY ${FASTDEPLOY_INSTALL_DIR}/lib/ DESTINATION . USE_SOURCE_PERMISSIONS) - install(DIRECTORY ${FASTDEPLOY_INSTALL_DIR}/third_libs/install/paddle2onnx/lib/ DESTINATION . USE_SOURCE_PERMISSIONS) - install(DIRECTORY ${ORT_LIB_PATH}/ DESTINATION . USE_SOURCE_PERMISSIONS) - if (OpenCV_SHARED) - install(DIRECTORY ${OpenCV_INSTALL_PATH}/lib/ DESTINATION . USE_SOURCE_PERMISSIONS PATTERN "cmake/*" EXCLUDE) - endif (OpenCV_SHARED) - endif (INSTALL_THIRD_LIBS) if (INSTALL_PYTHON) install(DIRECTORY src/Python DESTINATION .) endif (INSTALL_PYTHON) diff --git a/cmake/fastdeploy.cmake b/cmake/fastdeploy.cmake new file mode 100644 index 0000000000..ae0d5d072b --- /dev/null +++ b/cmake/fastdeploy.cmake @@ -0,0 +1,41 @@ + + +set(FASTDEPLOY_URL_PREFIX "https://github.com/aa889788/build-fastdeploy/releases/download") + +set(FASTDEPLOY_TAG "1.0.0") + +set(COMPRESSED_SUFFIX ".tar.gz") + +if(UNIX) + set(FASTDEPLOY_FILENAME "FastDeploy-Linux") +elseif(WIN32) + set(FASTDEPLOY_FILENAME "FastDeploy-Windows") +elseif(APPLE) + set(FASTDEPLOY_FILENAME "FastDeploy-macOS") +endif(UNIX) + +set(FASTDEPLOY_URL ${FASTDEPLOY_URL_PREFIX}/${FASTDEPLOY_TAG}/${FASTDEPLOY_FILENAME}${COMPRESSED_SUFFIX}) + +if (FASTDEPLOY_DIRECTORY) + set(FastDeploy_DIR ${FASTDEPLOY_DIRECTORY}) + find_package(FastDeploy REQUIRED PATHS ${FastDeploy_DIR}) + include_directories(${FastDeploy_INCLUDE_DIRS}) + list(APPEND DEPEND_LIBS ${FastDeploy_LIBS}) +else () + download_and_decompress(${FASTDEPLOY_URL} + ${CMAKE_CURRENT_BINARY_DIR}/${FASTDEPLOY_FILENAME}${COMPRESSED_SUFFIX} + ${THIRD_PARTY_PATH}/install/) + set(FASTDEPLOY_FILENAME fastdeploy) + set(FastDeploy_DIR ${THIRD_PARTY_PATH}/install/${FASTDEPLOY_FILENAME}) + + find_package(FastDeploy REQUIRED PATHS ${FastDeploy_DIR} NO_DEFAULT_PATH) + include_directories(${FastDeploy_INCLUDE_DIRS}) + list(APPEND DEPEND_LIBS ${FastDeploy_LIBS}) +endif (FASTDEPLOY_DIRECTORY) + +if (INSTALL_THIRD_LIBS) + install(DIRECTORY ${FastDeploy_DIR}/lib/ DESTINATION . USE_SOURCE_PERMISSIONS) + install(DIRECTORY ${ORT_LIB_PATH}/ DESTINATION . USE_SOURCE_PERMISSIONS) + install(DIRECTORY ${FastDeploy_DIR}/third_libs/install/paddle2onnx/lib/ + DESTINATION . USE_SOURCE_PERMISSIONS) +endif (INSTALL_THIRD_LIBS) diff --git a/cmake/opencv.cmake b/cmake/opencv.cmake new file mode 100644 index 0000000000..cbedb37363 --- /dev/null +++ b/cmake/opencv.cmake @@ -0,0 +1,45 @@ + + +set(OPENCV_URL_PREFIX "https://github.com/aa889788/build-opencv/releases/download") + +set(OPENCV_TAG "4.5.3") + +set(COMPRESSED_SUFFIX ".tar.gz") + +if(UNIX) + set(OPENCV_FILENAME "OpenCV-Linux") +elseif(WIN32) + set(OPENCV_FILENAME "OpenCV-Windows") +elseif(APPLE) + set(OPENCV_FILENAME "OpenCV-macOS") +endif(UNIX) + +set(OPENCV_URL ${OPENCV_URL_PREFIX}/${OPENCV_TAG}/${OPENCV_FILENAME}${COMPRESSED_SUFFIX}) + +if(OPENCV_DIRECTORY) + set(OpenCV_DIR ${OPENCV_DIRECTORY}) + find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR}) + include_directories(${OpenCV_INCLUDE_DIRS}) + list(APPEND DEPEND_LIBS ${OpenCV_LIBS}) +else() + download_and_decompress(${OPENCV_URL} + ${CMAKE_CURRENT_BINARY_DIR}/${OPENCV_FILENAME}${COMPRESSED_SUFFIX} + ${THIRD_PARTY_PATH}/install/) + set(OPENCV_FILENAME opencv) + set(OpenCV_DIR ${THIRD_PARTY_PATH}/install/${OPENCV_FILENAME}) + set(OPENCV_DIRECTORY ${OpenCV_DIR}) + if (WIN32) + set(OpenCV_DIR ${OpenCV_DIR}/lib) + endif() + find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR} NO_DEFAULT_PATH) + include_directories(${OpenCV_INCLUDE_DIRS}) + list(APPEND DEPEND_LIBS ${OpenCV_LIBS}) +endif(OPENCV_DIRECTORY) + +if (INSTALL_THIRD_LIBS) + if (OpenCV_SHARED) + install(DIRECTORY ${OpenCV_INSTALL_PATH}/lib/ + DESTINATION . + USE_SOURCE_PERMISSIONS PATTERN "cmake/*" EXCLUDE) + endif (OpenCV_SHARED) +endif (INSTALL_THIRD_LIBS) diff --git a/cmake/utils.cmake b/cmake/utils.cmake new file mode 100644 index 0000000000..6cfdbd790e --- /dev/null +++ b/cmake/utils.cmake @@ -0,0 +1,12 @@ +function(download_and_decompress url filename decompress_dir) + if(NOT EXISTS ${filename}) + message("Downloading file from ${url} to ${filename} ...") + file(DOWNLOAD ${url} "${filename}.tmp" SHOW_PROGRESS) + file(RENAME "${filename}.tmp" ${filename}) + endif() + if(NOT EXISTS ${decompress_dir}) + file(MAKE_DIRECTORY ${decompress_dir}) + endif() + message("Decompress file ${filename} ...") + execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xf ${filename} WORKING_DIRECTORY ${decompress_dir}) +endfunction()