feat: Download libraries with CMake

This commit is contained in:
shxyke
2022-12-05 09:21:01 +00:00
parent 4b37647123
commit e2d40e2ed5
4 changed files with 103 additions and 19 deletions

View File

@@ -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)

41
cmake/fastdeploy.cmake Normal file
View File

@@ -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)

45
cmake/opencv.cmake Normal file
View File

@@ -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)

12
cmake/utils.cmake Normal file
View File

@@ -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()