工具准备
1、 下载Cmake 3.25.1
2、下载OpenCV 4.6.0
创建一个目录叫 OpenCV_4.6.0,然后解压到该目录
并新建一个mingw_build目录用于存放一会的编译输出
3、MinGW 建议通过离线方式进行安装,在线安装容易失败
下载地址: MinGW-w64 - for 32 and 64 bit Windows Files
之后解压,并将mingw64/bin 放到系统环境变量中,输入gcc - v
确认是否设置成功。
开始编译
1、通过CMake生成OpenCV对应的Makefile
打开刚刚下载的图形化cmake配置工具,当然你也可以选择用源码配置。
首先配置对应的源码路径和编译输出路径
2、点击Configure 编译器配置为mingw bin下面的gcc/g++
Finish之后,会进行第一次配置,等待完成后编译选项都是红色的,稍后需要再配置一次
过程中大概率会出现ffmpeg相关文件下载失败
解决方法是将build/bin目录下的文件拷贝到source/.cache/ffmpeg目录下,并将名称修改为缓存一样的名字
但是我发现这个版本的Opencv bin下面只有一个dll, 这时可以去build目录下的CMakeDownloadLog下载日志中查看opencv_videoio_ffmpeg.dll对应的下载地址
手动下载后替换,这时可以根据需要调整一下配置选项, 我这里增加WITH_OPENGL, 不勾选WITH_VTK, 在CMake中再次点击Configure。 如果红色都变为白色, 说明配置成功
点击Generate, 生成Makefile成功
3、切换到mingw_build目录下,可以看到生成的Makefile, 执行mingw32-make
启动编译
注意这里如果你添加了 -j4 之类, 即启动了多线程编译,可能会编译失败,我遇到的情况是只要开启并行编译就会失败!
在不开启并行编译的情况下, 编译大概耗时1个半小时,最后98%时出现了一个python相关的错误(在编译其他老版本时没有遇到过类似问题),猜测是windows下终端编码设置问题。
尝试换gitbash 来编译,成功了!
如果需要查看详细的编译,错误日志,具体位置在
接着执行 mingw32-make install
成功后生成install文件夹
集成测试
1、将install下面对应的bin目录添加到系统环境变量
2、CLion中设置一下编译工具链为mingw, 设置后其他配置会自动检测。 我的CLion版本是2020.3
3、配置CMakeLists.txt
cmake_minimum_required(VERSION 3.17)
project(opencvProject)
add_executable(opencvProject main.cpp)
set(CMAKE_CXX_STANDARD 11)
set(OpenCV_DIR E:/OpenCV_4.6.0/opencv/mingw-build)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
target_link_libraries(opencvProject ${OpenCV_LIBS})
Reference
Windows10 环境下使用 Cmake 和 MinGW-w64 编译安装 OpenCV 4.0.1
OpenCV Clion编译器与环境配置