在Visual Studio高版本中使用Qt4,MSVC 2015/2017编译Qt 4.8.7源码

简介: 在Visual Studio高版本中使用Qt4,MSVC 2015/2017编译Qt 4.8.7源码

一、先来看一篇转载文章《在 VS2015 中使用 Qt4》


http://tangzx.qiniudn.com/post-0111-qt4-vs2015.html 最早的原文,看不到了


https://github.com/district10/qt4-vs2015x64 原作者的github,里面的东东都下载不了了



二、firecat本人的教程


0、Qt官方


Qt4.8.7官方源码下载


https://download.qt.io/new_archive/qt/4.8/4.8.7/


官网的exe只提供了MSVC2010,没有更高版本的。高版本需要自己下载源码编译。


源码里面的配置文件已经提供了MSVC 2015的编译选项,\qt-everywhere-opensource-src-4.8.7\mkspecs\win32-msvc2015


参照官方提供的编译文档一步一步执行即可;但是配置文件里没有提供MSVC 2017的编译选项。


官方编译的文档


https://doc.qt.io/archives/qt-4.8/installation.html


https://doc.qt.io/archives/qt-4.8/configure-options.html


https://doc.qt.io/archives/qt-4.8/install-win.html


https://doc.qt.io/archives/qt-4.8/install-mac.html


https://doc.qt.io/qt-5/build-sources.html



1、Qt 4.8.7+MSVC 2017


推荐使用第三方提供的源码,它已经是修改好的,里面含有MSVC 2017编译选项,可以编译。


https://github.com/scharsig/Qt Qt4.8.7+MSVC2017源码


https://forum.qt.io/topic/91623/building-qt-4-8-7-with-visual-studio-2017 Qt4.8.7+MSVC2017论坛


https://github.com/sandym/qt-patches 仅供参考,编译补丁


https://github.com/Homebrew/formula-patches/tree/master/qt 仅供参考,编译补丁


https://github.com/BartVandewoestyne/qt_4_8_7_with_vs2017_patch 仅供参考,编译补丁


完整的编译过程:


下载第三方源码https://github.com/scharsig/Qt/tree/master/qt-4.8.7-vs2017 然后解压


---step1---


Windows桌面-开始-程序-Visual Studio 2017-Visual Studio Tools-VC-x86 Native Tools Command Prompt for VS 2017


---step2---


C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>cd F:\Qt\setup-exe\4.8.7\Qt-master\qt-4.8.7-vs2017


---step3---


F:\Qt\setup-exe\4.8.7\Qt-master\qt-4.8.7-vs2017>configure -help


---step4---


F:\Qt\setup-exe\4.8.7\Qt-master\qt-4.8.7-vs2017>

configure -make nmake -debug-and-release -opensource -confirm-license -platform win32-msvc2017 -prefix F:\Qt\Qt4.8.7-msvc2017 -nomake examples -nomake tests


如果不想编译这么多功能模块,可以精简为:


configure -make nmake -debug-and-release -opensource -confirm-license -platform win32-msvc2017 -prefix F:\Qt\Qt4.8.7-msvc2017 \

 -no-qt3support -no-multimedia \

 -no-audio-backend -no-phonon -no-phonon-backend -no-libtiff \

 -no-libmng -no-dbus -no-nis -nomake examples -nomake tests

 -release              Compile and link Qt with debugging turned off.
 -debug                Compile and link Qt with debugging turned on.
 -nomake tests         Disable building of tests to speed up compilation
 -nomake examples      Disable building of examples to speed up compilation
 -confirm-license      Automatically acknowledge the LGPL 2.1 license.

--step5---


F:\Qt\setup-exe\4.8.7\Qt-master\qt-4.8.7-vs2017>nmake


---step6---


F:\Qt\setup-exe\4.8.7\Qt-master\qt-4.8.7-vs2017>nmake install


---step7---


添加到Qt Creator

image.png



---step8---


新建项目测试,Qt Creator+Qt4.8.7+MSVC2017编译项目时,如果报错:


intermediate\moc\moc_rs_actionzoompan.cpp:-1: error: C1041: 无法打开程序数据库“F:\CADCAM\QCAD\src\build-LibreCAD-v1.0.4-qt4-Desktop_Qt_4_8_7_MSVC2017_32bit-Debug\librecad\vc140.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS


解决办法:


在Qt Creator的项目文件,即.pro文件中,可以通过QMAKE_CXXFLAGS来给MSVC编译器传递编译开关。


QMAKE_CXXFLAGS += /FS

CONFIG += c++11 #C++11标准
#QMAKE_CXXFLAGS_DEBUG += -std=c++11 #在pro文件失效
#QMAKE_CXXFLAGS += -std=c++11 #在pro文件失效
QMAKE_CXXFLAGS += /FS #firecat add
win32-msvc*:QMAKE_CXXFLAGS += /wd"4819" #去掉C4819的警告
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zc:strictStrings #当在Debug模式下正常编译通过,但在Release模式下报C2440的错误,原因是Wbemidl.h这个头文件中有初始化非const的字符数组的写法

MSVC 2017编译器常见错误的解决:


https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/c-cpp-build-errors?view=vs-2017



2、Mac OS+Qt 4.8.7


笔者的Mac OS版本是MacOS-10.15-Catalina,高版本的OS和Clang已经不再支持Qt官方发布的Qt4了。


解决办法可以参见我的另一篇博文:https://blog.csdn.net/libaineu2004/article/details/104740623


https://trac.macports.org/ticket/58651 mac下编译qt4遇到问题


https://github.com/macports/macports-ports/tree/master/aqua/qt4-mac mac编译补丁




相关文章
|
2月前
|
C++
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
本文介绍了如何编译整合VTK 9.2、DICOM 0.8、DCMTK 3.6.7和Qt 6.2的步骤,包括安装Qt、CMake配置以及确认相关路径和版本设置。
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
|
2月前
|
Unix 网络虚拟化 C++
VS2022+Qt5.14.2成功编译MITK2022.10
使用VS2022和Qt5.14.2成功编译MITK2022.10的过程,包括编译结果的截图、遇到的编译问题的解决方法、两个重要的注意事项(patch文件格式的修改和ITK-gitclone-lastrun文件的存在),以及参考链接。文中详细描述了如何解决编译过程中遇到的错误C2220和警告C4819,以及如何修改文件编码和尾行格式。
140 1
VS2022+Qt5.14.2成功编译MITK2022.10
|
2月前
|
计算机视觉
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
这篇文章记录了使用VS2019编译Qt6.2.4、DCMTK3.6.7、VTK9.2.2、ITK5.3和OpenCV4.6.0的过程,包括下载和编译步骤,并提供了遇到编译错误时的解决方案和参考链接。
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
|
2月前
|
Windows
QT源码拾贝6-11(qwindowswindow)
这篇文章深入探讨了Qt源码中与窗口激活相关的函数,QDebug运算符重载,vscode的变量提示,Windows常用类型名,获取所有窗体的方法,以及QSharedPointer智能指针的使用。
QT源码拾贝6-11(qwindowswindow)
|
2月前
|
存储 Java C++
QT源码拾贝0-5(qimage和qpainter)
这篇文章介绍了在Qt源码中qimage和qpainter的使用,包括线程池的使用、智能指针的存储、std::exchange函数的应用、获取类对象的方法以及QChar字节操作。
QT源码拾贝0-5(qimage和qpainter)
|
2月前
|
C语言 C++ Windows
QT多插件通信框架CTK编译记录
本文记录了编译QT多插件通信框架CTK的过程,包括编译结果截图、部署配置、Log4Qt编译配置、参考链接和拓展资料。文中提供了详细的编译步骤和配置文件示例,以及相关的资源链接。
QT多插件通信框架CTK编译记录
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
181 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
90 0
|
2月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
|
2月前

推荐镜像

更多
下一篇
无影云桌面