版本说明
Qt Creator: 4.0.3 Based onQt 5.6.1
下载资源名称qt-opensource-windows-x86-mingw492-5.6.3.exe
OpenCV版本3.2.0
之前尝试新版本的3.3.1,但在编译过程中出现了没能解决的问题
CMake版本3.4.3
在编译和配置前,现将上述资源下载并安装。
编译过程
OpenCV下载解压后得到如下的文件。其中build文件中是头文件和各种编译器编译好的库文件,但没有mingw版本的库文件,所以就需要用到第二个文件source了,source文件中放的是opencv的源代码和CMakeLists文件等,我需要用mingw的编译器和这些源码编译出库文件。
打开CMake,设置opencv源文件路径和输出的目录。在源文件同级目录下新建cmake-build文件夹来作为输出目录。选择如下图所示:
点击左下角的configure配置按钮,来配置编译器信息。第一步配置如下图所示
点击下一步,C语言配置gcc编译器,C++配置g++编译器,选择的路径跟Qt的安装路径有关,我的Qt5.6安装在了D盘的Qt文件夹下,到Tools工具文件夹下找到相关的编译器,如下图所示
点击finish完成按钮。弹出警告窗口,如下所示。点击ok
可以看到下方的红色警告提示,CMAKE_MAKE_PROGRAM没有设置,所以需要去设置该变量。
点击Add_Entry按钮,添加该路径变量。该路径变量指向了mingw编译器路径,所以依然是到Qt的安装目录Tools下去找mingw编译器,如图所示,点击确定。
再次点击configure,发现又报错,点击ok。
勾选Advanced后发现仍然有CMAKE_MAKE_PROGRAM变量没有找到
双击该变量第二栏,选择编译器如图。
点击configure等待结束。结束后找到WITH_QT勾选起来,再次点击Configure。得到如下红色高亮区域
显示说明,默认选择的是C盘下老版本5.2的Qt文件,需要更改目录到安装在D盘下的5.6的相应目录
D:\Qt\Qt5.6.3\5.6.3\mingw49_32\lib\cmake\Qt5Concurrent
D:\Qt\Qt5.6.3\5.6.3\mingw49_32\lib\cmake\Qt5Core
D:\Qt\Qt5.6.3\5.6.3\mingw49_32\lib\cmake\Qt5Gui
D:\Qt\Qt5.6.3\5.6.3\mingw49_32\lib\cmake\Qt5OpenGL
D:\Qt\Qt5.6.3\5.6.3\mingw49_32\lib\cmake\Qt5Test
D:\Qt\Qt5.6.3\5.6.3\mingw49_32\lib\cmake\Qt5Widgets
除此意外还有一些选项要修改:
找到ENABLE_PRECOMPILED_HEADERS变量,取消勾选
找到BUILD_opencv_python3变量,取消勾选
点击configure,没有报错后点击Generate生成Makefile文件。
进入输出目录cmake_build,按住shift键右击,选择在此处打开命令窗口,进入cmd。键入mingw32-make就会开始编译文件了,如果没有识别出该命令,应该是Qt的mingw-32.exe编译器所在的bin目录没有添加到环境变量,添加一下环境变量,我这边已经添加过了,如下图所示
接着在cmd中键入mingw32-make,如下图所示,开始编译了,耐心等待完成
接着键入mingw32-make install,直到完成。
完成后进入cmake-build文件夹,其中的install文件夹下就是我们想要的东西了,include文件夹中是所有的头文件,x86中的mingw下,bin是编译出来的动态链接库,lib是编译出来的静态链接库
配置环境
将Install文件夹中include文件夹、bin文件夹和lib文件夹复制出来,接着在Qt新建项目的pro文件中配置工程,如下图所示:
编译程序没有问题,但运行时报错:
将引用的静态链接库改成动态链接库就没有问题了,重新配置如下
程序成功跑了起来。后来发现lib文件夹只有几M应该是还有文件没引用全。