之前编译OpenCV源码时遇到的一个坑,浅浅记录一下。
尝试自己编译的时候,在cmake config这一步报了几个警告,但是没报错,就没管。最后到vs里面编译快完成的时候报错了,功亏一篑,浪费了大把等待的时间。
回来检查的时候,结合网上其他大佬给出的说法,发现cmake config这一步报的有几个警告不能无视,内容如下:
CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
IPPICV: Download failed: 6;"Couldn't resolve host name"
For details please refer to the download log file:
G:/opensource/opencv-4.4.0/build/CMakeDownloadLog.txt
Call Stack (most recent call first):
3rdparty/ippicv/ippicv.cmake:37 (ocv_download)
cmake/OpenCVFindIPP.cmake:244 (download_ippicv)
cmake/OpenCVFindLibsPerf.cmake:12 (include)
CMakeLists.txt:688 (include)
CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
FFMPEG: Download failed: 6;"Couldn't resolve host name"
For details please refer to the download log file:
G:/opensource/opencv-4.4.0/build/CMakeDownloadLog.txt
Call Stack (most recent call first):
3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)
modules/videoio/cmake/detect_ffmpeg.cmake:14 (download_win_ffmpeg)
modules/videoio/cmake/init.cmake:3 (include)
modules/videoio/cmake/init.cmake:22 (add_backend)
cmake/OpenCVModule.cmake:312 (include)
cmake/OpenCVModule.cmake:375 (_add_modules_1)
modules/CMakeLists.txt:7 (ocv_glob_modules)
根据提示信息,找到以下文件:
G:/opensource/opencv-4.4.0/build/CMakeDownloadLog.txt
仔细阅读后,发现是下面这四个文件下载失败造成的:
ippicv_2020_win_intel64_20191018_general.zip
opencv_videoio_ffmpeg.dll
opencv_videoio_ffmpeg_64.dll
ffmpeg_version.cmake
下载链接都在CMakeDownloadLog.txt文件里,既然自动下载不了,那就手动下载(这里需要借助一下科学上网,dddd)。下载后长这样:
进一步仔细阅读CMakeDownloadLog.txt文件,发现OpenCV库下载完这些文件后还会校验它们的MD5,所以在将这些文件复制到对应目录时,需要把文件名改成CMakeDownloadLog.txt里进行校验时的名字。
复制到.cache目录下的对应位置并修改文件名后,长这样:
然后重新再cmake-gui里执行config,那几个警告消失了。最后用vs编译安装也顺利通过。