起因:
做某项目需要在windows上使用opencv C++ 版,想到用Clion调试debug自己的程序,但发现CLion用的是mingw (GCC编译器和GNU Binutils移植到Win32平台下的产物)。
情况即是:下载了opencv网站原址上编译好的版本(4.8.0),在CMakeLists.txt 中加了
set(OpenCV_DIR 目标路径)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
rmdir /s /q build
cmake -S . -B build
cmake --build build --config Release
.\build\Release\main.exe
可以在windows终端调用以下程序生成可执行文件,且文件运行正常。但是,在clion中调试和run都报错。
看了网上解释,说是clion需要通过mingw编译opencv才能用啊,所以就自己编译一下。遇到的几个坎坎坷坷在以下
问题1:msys64/mingw64/bin 文件夹下为空
原因是没有使用 -S命令安装需要的包
windows搜索框打开寻找mysys2, 进入那个命令行,输入一下代码
pacman -S base-devel
pacman -S mingw-w64-x86_64-toolchain
或者网上自行搜索怎么安装mingw。下载之后就有了!
为什么会需要mingw/bin这个文件夹是因为,一会儿cmake需要使用gcc.exe 和g++.exe 去编译
问题2:CMake 遇到的问题
1. 记得在source文件夹中打开terminal然后去找你的cmake gui(或者使用命令我不懂,我就直接打开Cmakegui搞的)
2. 选择CMake
记得新建一个mingw-build文件夹用来存放build好的文件
source就选择当前所在文件夹
点击configure选择选择MinGW Makefiles
然后选择Specify Native Compilers, 把C和C++的编译器选为刚才提到的,msys64/mingw64/bin下的gcc.exe 和g++.exe。然后就开始编译
参考:OpenCV使用CMake和MinGW-w64的编译安装 | HuiHut
3. configure勾选项
注意我是4.8.0版本,有遇到如下报错,原因和解决方式都写在下面这个opencv Github 链接里了,翻译成用cmakegui就是, with_obsensor不要勾选,(我还勾选了with_opengl,可能关系不大但是第一个确实有关系):
Build with Ninja (MSYS2 UCRT64) on Windows 11 fails · Issue #23070 · opencv/opencv · GitHub
4. mingw 编译加速
使用多线程方式比单线程快好多,如下:
进入mingw-build 文件夹,
mingw32-make -j 8
八个线程吧可能意思是。
然后等一会儿编译成功了 再
mingw32-make install
终于。。。