如何使用Cmake生成debug版本和release版本的程序

如何使用Cmake生成debug版本和release版本的程序,第1张

Debug版本就是调试版本,Visual C++

6.0默认的就是Debug版本。在Debug版本中,可以使用单步执行、跟踪等功能,但其生成的可执行文件比较大,代码运行比较慢。Release版本就是发行版本,其运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。

还有一点,Release版本的exe文件链接的目标是标准的MFC DLL(Use MFC in a shared

or static

dll)。比如MFC42.DLL。这些DLL在安装windows的时候,就会装到系统中。因此,这样的exe在没有安装Visual C++

6.0的机器上也能运行。而Debug版本的exe链接了调试版本的MFC DLL文件,比如MFC42.DLL。在没有安装Visual C++

6.0的机器上不能运行,因为缺少MFC42D.DLL等,除非选择use static dll when link。

Debug版本中包含大量的调试信息,所以我们能够单步执行、Watch表达式等等,而release版本仅包含我们的代码。由于要利于程序的测试,Debug版本的程序附带很多测试信息和测试程序时才需要的代码,所以Debug版本的程序需要VC的Debug(注意这里不是指程序的Debug,而是指VC的调试器)才能运行。而Release版本就不具有这些特性,所以在Release版本的程序上不能做调试!打包就相当于将你制作的东西发布出去,应该是优化过的代码,当然要用发布版本,即Release版本。

两者所用的动态连接库是不一样的,Release版本所需要的dll和lib已经包含在Windows的system(或者system32)下,所以只需要拷贝就可以运行了,但是Debug版本需要的dll和lib是在安装vc时装上去的,如果你想直接将debug版本给用户,需要拷贝几个文件,但这样显得很臃肿,一般来说不可取。

Qt5.7.1

CMake 3.10.2

opencv-3.3.0-vc14

右键“我的电脑”——属性——高级系统设置——环境变量,我的路径是C:\Qt\Qt5.7.1\Tools\mingw530_32\bin,如图所示

打开CMake,设置源码的路径和输出路径,然后点击Configure,选择如所示

Next,配置c和c++,我的路径如下

点击Finish,等待加载完毕,暴很多红项

在Search框内搜索WITH_QT和WITH_OPENGL,都打上勾,再点击Configure

此时还有这几项是红的,点击ADD Entry,添加“QT_MAKE_EXECUTABLE”,并选择qmake的路径如图所示

在Search搜索CMAKE_BUILD_TYPE,修改value成  Release 或RelWithDebInfo

再次点击Configure,然后点击Generate

打开cmd命令提示符,进入输出文件夹并编译

这里的8根据自己电脑配置而定,8核cpu  我这里填8

如果编译过程中出现类似这样的错误:

解决办法:在CMake搜索ENABLE_PRECOMPILED_HEADERS,把这个项的打勾去掉,然后点Configure,Generate,再执行编译:ming32-make -j 8

如果遇到类似这样的错误

解决办法:根据提示的路径去opencv源码文件找cap_dshow.cpp文件,我的在D:\tmp\opencv\sources\modules\videoio\src文件夹里,用记事本打开cap_dshow.cpp,搜索

然后在上面添加

再次执行编译:ming32-make -j 8

方法同上,把D:\tmp\opencv-build\install\x86\mingw\bin添加到path里

打开Qt,新建一个项目,Qt Widgets Application 

调试

如果出现错误:

解决办法:点击左侧的项目,填好构建目录,如图所示:

修改.pro文件,添加

这里需要注意一下330,有些版本是320

修改完后,点击构建 ,执行qmake

修改mainwindow.cpp

效果:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11259583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存