cmake/opencv.cmake (65 lines of code) (raw):

include(ExternalProject) set(PACKAGE_VERSION_OPENCV "4.10.0") set(OPENCV_PROJECT "extern_opencv") set(OPENCV_PREFIX_DIR ${THIRD_PARTY_PATH}/opencv) SET(OPENCV_LIB_NAME "opencv_world4100") if (CMAKE_BUILD_TYPE STREQUAL Debug) SET(OPENCV_LIB_NAME "opencv_world4100d") endif() set(OPENCV_SOURCE_DIR ${THIRD_PARTY_PATH}/opencv/src/${OPENCV_PROJECT}) set(OPENCV_INSTALL_DIR ${THIRD_PARTY_PATH}/install/opencv) set(OPENCV_SHARED_LIB_SOURCE "${OPENCV_SOURCE_DIR}/build/x64/vc16/bin/${OPENCV_LIB_NAME}.dll" CACHE FILEPATH "shared library source." FORCE) set(LOCAL_OPENCV_SHARED_LIB_SOURCE "${CMAKE_SOURCE_DIR}/opencv/windows/arm64/${OPENCV_LIB_NAME}.dll" CACHE FILEPATH "shared library source." FORCE) set(OPENCV_SHARED_LIB_DEST "${OPENCV_INSTALL_DIR}/lib/${OPENCV_LIB_NAME}.dll" CACHE FILEPATH "shared library install target." FORCE) set(OPENCV_STATIC_LIB_SOURCE "${OPENCV_SOURCE_DIR}/build/x64/vc16/lib/${OPENCV_LIB_NAME}.lib" CACHE FILEPATH "static library source." FORCE) set(LOCAL_OPENCV_STATIC_LIB_SOURCE "${CMAKE_SOURCE_DIR}/opencv/windows/arm64/${OPENCV_LIB_NAME}.lib" CACHE FILEPATH "static library source." FORCE) set(OPENCV_STATIC_LIB_DEST "${OPENCV_INSTALL_DIR}/lib/${OPENCV_LIB_NAME}.lib" CACHE FILEPATH "static library target." FORCE) set(OPENCV_URL "https://github.com/opencv/opencv/releases/download/${PACKAGE_VERSION_OPENCV}/opencv-${PACKAGE_VERSION_OPENCV}-windows.exe" ) string(TOUPPER "${CMAKE_SYSTEM_PROCESSOR}" SYSTEM_PROCESSOR) if (SYSTEM_PROCESSOR STREQUAL ARM64) ExternalProject_Add( ${OPENCV_PROJECT} ${EXTERNAL_PROJECT_LOG_ARGS} PREFIX ${OPENCV_PREFIX_DIR} DOWNLOAD_COMMAND "" CONFIGURE_COMMAND "" BUILD_COMMAND "" UPDATE_COMMAND "" INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${LOCAL_OPENCV_SHARED_LIB_SOURCE} ${OPENCV_SHARED_LIB_DEST} && ${CMAKE_COMMAND} -E copy ${LOCAL_OPENCV_STATIC_LIB_SOURCE} ${OPENCV_STATIC_LIB_DEST} BUILD_BYPRODUCTS ${OPENCV_SHARED_LIB_DEST}) else() ExternalProject_Add( ${OPENCV_PROJECT} ${EXTERNAL_PROJECT_LOG_ARGS} URL ${OPENCV_URL} PREFIX ${OPENCV_PREFIX_DIR} DOWNLOAD_NO_PROGRESS 1 DOWNLOAD_EXTRACT_TIMESTAMP true CONFIGURE_COMMAND "" BUILD_COMMAND "" UPDATE_COMMAND "" INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${OPENCV_SHARED_LIB_SOURCE} ${OPENCV_SHARED_LIB_DEST} && ${CMAKE_COMMAND} -E copy ${OPENCV_STATIC_LIB_SOURCE} ${OPENCV_STATIC_LIB_DEST} BUILD_BYPRODUCTS ${OPENCV_SHARED_LIB_DEST}) endif() add_library(opencv STATIC IMPORTED GLOBAL) set_property(TARGET opencv PROPERTY IMPORTED_LOCATION ${OPENCV_STATIC_LIB_DEST}) add_dependencies(opencv ${OPENCV_PROJECT})