1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-21 19:33:03 +04:00

Fix Windows build issues with IPPICV unpack and IPPIW CMakeLists.txt copy (#28608)

- Replace execute_process(tar) with file(ARCHIVE_EXTRACT) for native .zip support
  and better Windows path handling when CMAKE_VERSION >= 3.18
- Replace execute_process copy with file(COPY) and existence check for reliable
  CMakeLists.txt copying to avoid timing/path issues on Windows
- Maintains backward compatibility with older CMake versions and Linux behavior

Fixes issue #28608
This commit is contained in:
Arths17
2026-03-05 23:05:10 -06:00
parent fe160f3eed
commit 2ea7e3ad06
2 changed files with 14 additions and 6 deletions
+6
View File
@@ -282,12 +282,18 @@ ${OPENCV_DOWNLOAD_LOG}
ocv_download_log("#mkdir \"${DL_DESTINATION_DIR}\"") ocv_download_log("#mkdir \"${DL_DESTINATION_DIR}\"")
file(MAKE_DIRECTORY "${DL_DESTINATION_DIR}") file(MAKE_DIRECTORY "${DL_DESTINATION_DIR}")
ocv_download_log("#unpack \"${DL_DESTINATION_DIR}\" \"${CACHE_CANDIDATE}\"") ocv_download_log("#unpack \"${DL_DESTINATION_DIR}\" \"${CACHE_CANDIDATE}\"")
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}" execute_process(COMMAND "${CMAKE_COMMAND}" -E tar xzf "${CACHE_CANDIDATE}"
WORKING_DIRECTORY "${DL_DESTINATION_DIR}" WORKING_DIRECTORY "${DL_DESTINATION_DIR}"
RESULT_VARIABLE res) RESULT_VARIABLE res)
if(NOT res EQUAL 0) if(NOT res EQUAL 0)
message(FATAL_ERROR "${__msg_prefix}Unpack failed: ${res}") message(FATAL_ERROR "${__msg_prefix}Unpack failed: ${res}")
endif() endif()
endif()
else() else()
ocv_download_log("#copy \"${COPY_DESTINATION}\" \"${CACHE_CANDIDATE}\"") ocv_download_log("#copy \"${COPY_DESTINATION}\" \"${CACHE_CANDIDATE}\"")
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CACHE_CANDIDATE}" "${COPY_DESTINATION}" execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CACHE_CANDIDATE}" "${COPY_DESTINATION}"
+3 -1
View File
@@ -83,7 +83,9 @@ macro(ippiw_setup PATH BUILD)
set(IPP_IW_LIBRARY ippiw) set(IPP_IW_LIBRARY ippiw)
set(IPP_IW_INCLUDES "${IPP_IW_PATH}/include") set(IPP_IW_INCLUDES "${IPP_IW_PATH}/include")
set(IPP_IW_LIBRARIES ${IPP_IW_LIBRARY}) 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) add_subdirectory("${IPP_IW_PATH}/" ${OpenCV_BINARY_DIR}/3rdparty/ippiw)
set(HAVE_IPP_IW 1) set(HAVE_IPP_IW 1)