diff --git a/cmake/OpenCVDownload.cmake b/cmake/OpenCVDownload.cmake index 40e48d7465..0f8de153d8 100644 --- a/cmake/OpenCVDownload.cmake +++ b/cmake/OpenCVDownload.cmake @@ -282,11 +282,17 @@ ${OPENCV_DOWNLOAD_LOG} ocv_download_log("#mkdir \"${DL_DESTINATION_DIR}\"") file(MAKE_DIRECTORY "${DL_DESTINATION_DIR}") ocv_download_log("#unpack \"${DL_DESTINATION_DIR}\" \"${CACHE_CANDIDATE}\"") - execute_process(COMMAND "${CMAKE_COMMAND}" -E tar xzf "${CACHE_CANDIDATE}" - WORKING_DIRECTORY "${DL_DESTINATION_DIR}" - RESULT_VARIABLE res) - if(NOT res EQUAL 0) - message(FATAL_ERROR "${__msg_prefix}Unpack failed: ${res}") + if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.18") + file(ARCHIVE_EXTRACT + INPUT "${CACHE_CANDIDATE}" + DESTINATION "${DL_DESTINATION_DIR}") + else() + execute_process(COMMAND "${CMAKE_COMMAND}" -E tar xzf "${CACHE_CANDIDATE}" + WORKING_DIRECTORY "${DL_DESTINATION_DIR}" + RESULT_VARIABLE res) + if(NOT res EQUAL 0) + message(FATAL_ERROR "${__msg_prefix}Unpack failed: ${res}") + endif() endif() else() ocv_download_log("#copy \"${COPY_DESTINATION}\" \"${CACHE_CANDIDATE}\"") diff --git a/cmake/OpenCVFindIPPIW.cmake b/cmake/OpenCVFindIPPIW.cmake index 995249ff95..c17d960fb3 100644 --- a/cmake/OpenCVFindIPPIW.cmake +++ b/cmake/OpenCVFindIPPIW.cmake @@ -88,7 +88,9 @@ macro(ippiw_setup PATH BUILD) set(IPP_IW_LIBRARY ippiw) set(IPP_IW_INCLUDES "${IPP_IW_PATH}/include") set(IPP_IW_LIBRARIES ${IPP_IW_LIBRARY}) - execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${OpenCV_SOURCE_DIR}/3rdparty/ippicv/CMakeLists.txt" "${IPP_IW_PATH}/") + if(NOT EXISTS "${IPP_IW_PATH}/CMakeLists.txt") + file(COPY "${OpenCV_SOURCE_DIR}/3rdparty/ippicv/CMakeLists.txt" DESTINATION "${IPP_IW_PATH}") + endif() add_subdirectory("${IPP_IW_PATH}/" ${OpenCV_BINARY_DIR}/3rdparty/ippiw) set(HAVE_IPP_IW 1)