QT引入OpenCV3
cmake 官方下载地址https://cmake.org/files/,里面有各个版本,网速的好的小伙伴可自行选择合适的版本下载
我下了个最新的,cmake-3.17.3-win32-x86.zip,cmake-3.17.3-win64-x64.zip这两个区别还没搞清楚,是生成的库是32位或64位的区别吧?就目前的应用看,32位对我也够用,先用cmake-3.17.3-win32-x86.zip吧
OpenCV也下了个最新的,解压缩到D:\Program Files (x86)\opencv-4.3.0了。
QT也是最新的Qt5.14.2,哈哈,新手都这样,喜欢工具最新,其实坑一堆。当年用androd studio2.0的时候,差点没被坑死。
不过QT也用最低的版本,没办法,为了照顾几十台2000的操作系统。不过写webserive的时候有点麻烦。
成功与否不知,cmake下载还没完成,学习一下cmake吧,为啥用cmake?不用VC14,15?我觉得吧,window有一天会被特朗普在中国禁用,我还能在linux上蹦跶一下,有口饭吃,前两年三星购买的几台设备居然全是linux了,那还真的要有点危机感吧。
先道用一下别人的文章学习一下:
Cmake 介绍,下载和安装以及使用:https://fukun.org/archives/0421949.html
cmake是kitware公司以及一些开源开发者在开发几个工具套件(VTK)的过程中所产生的衍生品。后来经过发展,最终形成体系,在2001年成为一个独立的开放源代码项目。其官方网站是www.cmake.org,可以通过访问官方网站来获得更多关于cmake的信息,而且目前官方的英文文档比以前有了很大的改进,可以作为实践中的参考手册。
cmake的流行离不开KDE4的选择。KDE开发者在使用autotools近10年之后,终于决定为KDE4项目选择一个新的工程构建工具。之所以如此,用KDE开发者们自己话来说,就是:只有少数几个“编译专家”能够掌握KDE现在的构建体系。在经历了unsermake,scons以及cmake的选型和尝试之后,KDE4最终决定使用cmake作为自己的构建系统。在迁移过程中,进展一场的顺利,并获得了cmake开发者的支持。所以,目前的KDE4开发版本已经完全使用cmake来进行构建。
随着cmake 在KDE4项目中的成功,越来越多的项目正在使用cmake作为其构建工具,这也使得cmake正在成为一个主流的构建体系。
上面说了这么多(不是我说的,道的,不如下面一句话好理解)CMake 是个非常棒的项目管理工具
一、为何要使用项目构建工具?
为何要使用cmake和autotools之类的项目构建工具? 我想,这恐怕是刚刚接触软件项目的人最应该问的问题之一了。
“Hello, world!“这个最经典的程序相信我们每个人都写过。无论在什么平台下,编译和运行这个程序都仅需要非常简单的操作。但事实上,hello,world最多只能算是一个实例程序,根本算不上一个真正的软件项目。
任何一个软件项目,除了写代码之外,还有一个更为重要的任务,就是如何组织和管理这些代码,使项目代码层次结构清晰易读,这对以后的维护工作大有裨益。使想一下,如果把一个像KDE4那么大的项目像hello world那样,把全部代码都放到一个main.cpp文件中,那将会是多么恐怖的一件事情。别说KDE4,就是我们随便一个几千行代码的小项目,也不会有人干这种蠢事。
决定代码的组织方式及其编译方式,也是程序设计的一部分。因此,我们需要cmake和autotools这样的工具来帮助我们构建并维护项目代码。
看到这里,也许你会想到makefile,makefile不就是管理代码自动化编译的工具吗?为什么还要用别的构建工具?
其实,cmake和autotools正是makefile的上层工具,它们的目的正是为了产生可移植的makefile,并简化自己动手写makefile时的巨大工作量。如果你自己动手写过makefile,你会发现,makefile通常依赖于你当前的编译平台,而且编写makefile的工作量比较大,解决依赖关系时也容易出错。因此,对于大多数项目,应当考虑使用更自动化一些的 cmake或者autotools来生成makefile,而不是上来就动手编写。
总之,项目构建工具能够帮我们在不同平台上更好地组织和管理我们的代码及其编译过程,这是我们使用它的主要原因。
二、cmake的主要特点:
cmake和autotools是不同的项目管理工具,有各自的特点和用户群。存在即为合理,因此我们不会对两者进行优劣比较,这里只给出cmake的一些主要特点:
1.开放源代码,使用类 BSD 许可发布。
2.跨平台,并可生成 native 编译配置文件,在 Linux/Unix 平台,生成 makefile,在 苹果平台,可以生成 xcode,在 Windows 平台,可以生成 MSVC 的工程文件。
3.能够管理大型项目,KDE4 就是最好的证明。
4.简化编译构建过程和编译过程。Cmake 的工具链非常简单:cmake+make。
5.高效率,按照 KDE 官方说法,CMake 构建 KDE4 的 kdelibs 要比使用 autotools 来 构建 KDE3.5.6 的 kdelibs 快 40%,主要是因为 Cmake 在工具链中没有 libtool。
6.可扩展,可以为 cmake 编写特定功能的模块,扩充 cmake 功能。
项目管理完毕,还是需要编译的,我用了集成的mingw.
因为是QT自带的,需要在环境变量里配置下,(唉,说起这个,惭愧,学习了好常时间JAVA,才找个小弟给我把JAVA环境打通 )
此电脑(计算机)右键-> 高级系统设置->环境变量->系统变量->path(双击)。如下图(我安装到E盘\software2目录下了)
我电脑里是D:\Qt\Qt5.14.2\Tools\mingw730_32\bin,这个目录.
WIN10下面添加还好,不会把环境变量破坏掉,以前有位兄台,直接把这个搞丢了,想唱首歌男人哭吧哭吧不是罪.
话说回来,我的cmake还没有下载完,居然我在以前的下载文件中找到3.15.5,32位的,不管了,先装吧,看网上有说要加到系统变量中,这个安装的时候就有提示了,等安装完了,我去看一下有没有.
cmake,mingw都有了.
终于开始编译了,居然不知道要选mingw,忽然才发现我有那么多编译器,一堆啊:
点了Configure,Generate,再次点Configure,Generate(按网上说的勾选掉反而报错了,后来再次Configure,就没有勾掉了,居然成本了).
祝贺一下自己马上成功.
C++大型项目真不是一般人写的,像我这种不太习惯解释性语言的人,用久了会有马虎的毛病,让QT给治的不行,一个编译错误,C#里几秒,QT下几分钟才能出来,解决更是麻烦.
一会功夫,报错了:
原因:the windres.exe mingw uses cannot handle/escape “long long” given as a cmdline arg
解决方法:在cmake里面找到OPENCV_ENABLE_ALLOCATOR_STATS或者在search里面搜索,然后把后面的勾选去掉,接着Configure和Generate后,接着在cmd窗口中mingw32-make即可继续编译。
接下来编译采用4核了,时间等不起,mingw32-make -j 4,果然快了不少.但比起C#,算了,不说了,都是泪.
闹心扒拉的就为了下面这些个玩意:
还是少了一个步骤:
回到刚才那个目录,执行mingw32-make install,主要是生成 头文件啥的,没这个真不行,我刚才打包下载发了个链接也得改改.