Cmake编译pencv报错汇总
所采用的cmake版本3.26.4,下载网址http://www.cmake.org/cmake/resources/software.html
所编译的opencv3.4.16,内部包含 build 文件夹(已编译好的库,使用 MSVC 的话,经常性报错:所添加的libs路径文件无效或损坏,无法读取)和 sources 文件夹(源码)
因而我们是围绕sources 文件夹进行编译,编译设置流程可参考博客一:
QT 下使用 opencv with_QT_为什么先生2012的博客-CSDN博客
博客二:
[OpenCV] -- win7下配置OpenCV的Qt开发环境_mvsc qt5.8 opencv_lelexin的博客-CSDN博客
注意需要两篇博客结合着应用,尤其对于新手来说。
应用编译中是有报错的,主要有以下情形:
第一种:参考博客一流程到点击 Configure,设置编译器,此时会报错
CMake编译时出现“error in configuration process project files may be invalid” ,下面小框内提示CMake was unable to find a build program corresponding to “MinGW Makefiles“,
解决可参考博客三:
CMake Error: CMake was unable to find a build program corresponding to “MinGW Makefiles“. CMAKE_MAKE_"make error: cmake was unable to find a build prog_有梦想的毛毛虫的博客-CSDN博客
勾选Advanced,对变量:CMAKE_MAKE_PROGRAM 设置value .QT目录下的Tools/mingw530_32/bin/mingw32-make.exe再次点击 Configure即可解除报错,
第二种:
编译时报错
Building RC object modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj
'windres' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
参考博客:
https://blog.csdn.net/lizaijinsheng/article/details/120194560?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%89%A7%E8%A1%8Cmingw32-make%E6%97%B6%EF%BC%8C%E6%8A%A5%E9%94%99%27windres%27%20%E4%B8%8D%E6%98%AF&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-120194560.142^v89^control,239^v2^insert_chatgpt&spm=1018.2226.3001.4187
报错原因:执行\build.make:1450: recipe for target modules\core\CMakeFiles\opencv_core.dir\build.make的第1661行出现错误,导致vs_version.rc.obj文件未生成。
解决办法:根据build.make中的错误行,自己修改编译命令,手动生成vs_version.rc.obj,并重新执行mingw32-make命令编译。
先形成该文件的命令行
E:\Qt5.9.9anzhuang\Tools\mingw530_32\bin\windres.exe E:\opencv4.5.2\opencv_build_mingw\modules\core\vs_version.rc –O coff E:\opencv4.5.2\opencv_build_mingw\modules\core\CMakeFiles\opencv_core.dir\vs_version.rc.obj
注意命令行,\modules前路径换成自己的
第三种 编译到44%再次报错
[ 44%] Linking CXX shared library ..\..\bin\libopencv_highgui3416.dll
collect2.exe: error: ld returned 1 exit status
modules\highgui\CMakeFiles\opencv_highgui.dir\build.make:220: recipe for target 'bin/libopencv_highgui3416.dll' failed
mingw32-make[2]: *** [bin/libopencv_highgui3416.dll] Error 1
CMakeFiles\Makefile2:3010: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' failed
mingw32-make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
Makefile:164: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
参考博客:
https://blog.csdn.net/qq_46284579/article/details/121113910?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-12-121113910-blog-120657597.235^v38^pc_relevant_anti_t3&spm=1001.2101.3001.4242.7&utm_relevant_index=15
解决方法
在cmake gui中添加条目OPENCV_VS_VERSIONINFO_SKIP = 1,

即点击add entry,在新窗口中name中输入OPENCV_VS_VERSIONINFO_SKIP
Value后面打√
再重新Configure,Generate。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
