如题,今天我在windows上使用CMake编译OpenCV时,出现了以下错误:

ADE: Download: v0.1.1f.zip

CMake Error: Problem with archive_write_finish_entry(): Can't restore time

CMake Error: Problem extracting tar: E:/Projects/temp/OpenCV/opencv/.cache/ade/b624b995ec9c439cbc2e9e6ee940d3a2-v0.1.1f.zip

CMake Error at cmake/OpenCVDownload.cmake:240 (message):

ADE: Unpack failed: 1

Call Stack (most recent call first):

modules/gapi/cmake/DownloadADE.cmake:5 (ocv_download)

modules/gapi/cmake/init.cmake:19 (include)

cmake/OpenCVModule.cmake:312 (include)

cmake/OpenCVModule.cmake:375 (_add_modules_1)

modules/CMakeLists.txt:7 (ocv_glob_modules)

经过查询发现是windows上默认无法使用tar命令进行解压,故相关资源无法被使用。因此我们需要修改CMake配置文件中的解压命令。

该命令位于OpenCV-4.0.0/cmake/OpenCVDownload.cmake中的第227行中,不同版本可能略有差异,可以在226行周围查找此行代码:

execute_process(COMMAND "${CMAKE_COMMAND}" -E tar xzf "${CACHE_CANDIDATE}"

将其中的解压命令更改为自己的解压缩软件。本人用的是BandiZip,故将其更改为:

execute_process(COMMAND bc x "${CACHE_CANDIDATE}"

如果您使用的是7zip,将“bc”更改为“7z”即可,其他不用改动。

需要注意的是,无论使用那个解压软件,都需要将解压软件添加到环境变量中,确保命令行可以调用您的解压软件。添加环境变量请参考:将程序安装路径添加到环境变量PATH里win10 - 木子杰

查看原文