首页 > 其他分享 >使用MingW-w64 编译 64bit Qt5

使用MingW-w64 编译 64bit Qt5

时间:2025-01-05 17:11:13浏览次数:1  
标签:Qt5 qt skip 64bit w64 echo set FILE PATCH%

现在Qt官方提供的mingw编译器的预编译版本都是32bit的,如果想使用64bit的话需要自己手动进行编译。

自己编译的话只需要下载mingw-w64编译器和Qt的源码,之前在官方Wiki上看到还需要Perl,实际测试发现没有Perl也可以正常编译。

mingw-w64直接去mingw-w64官网下载就可以了,选择MingW-W64-builds下载。安装时记得架构记得选择x86_64,版本的话选择最新的就可以了,我编译时使用的是8.1.0没有问题。

Qt源码的话也去Qt官网下载,5.9.6版本的下载地址为http://download.qt.io/archive/qt/5.9/5.9.6/single/qt-everywhere-opensource-src-5.9.6.zip,其他版本的可以到http://download.qt.io/archive/qt/ 到对应目录下载,如果下载预编译版本不想注册的话也可以直接从这里下载安装包。

下载好Qt安装包后直接进行解压,解压完成后需要注意默认解压出的路径比较长比如E:\qt-everywhere-opensource-src-5.9.6\qt-everywhere-opensource-src-5.9.6,mingw存在bug,太长的路径编译会报错,找不到相应的头文件’ No such file or directory #include “… qfreetypefontdatabase_p.h”‘。

解压完成后,在源文件夹目录新建以下bat脚本,QtPrefixDir为执行make install命令时安装的目录、MingwDir为安装的mingw-w64的路径。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
@echo off

rem CONFIGURE BEFORE RUN SCRIPT!!==

set QtSrcDir=%CD%

set QtPrefixDir=C:\Qt\5.9.1-x64

set MingwDir=C:\mingw-w64\x86_64-7.1.0-posix-seh-rt_v5-rev0\mingw64<br>
set BuildType=-debug-and-release

set QtSPEC=win32-g++

set LANG = en

rem =======================================================================

PATH = %MingwDir%\bin;%MingwDir%\opt\bin;%SystemRoot%\system32;%SystemRoot%

set QT_INSTALL_PREFIX = %QtStaticDir%

set OldDir=%CD%

cd %QtSrcDir%

cmd /C "configure.bat -shared %BuildType% -platform %QtSPEC% -prefix %QtPrefixDir% -opensource -confirm-license -c++std c++14 -nomake examples -skip wayland -skip purchasing -skip serialbus -skip qtserialport -skip script -skip scxml -skip speech -skip location -no-opengl -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -no-openssl"

if ERRORLEVEL 1 goto :error

mingw32-make -r -k -s -j4

if ERRORLEVEL 1 goto :error

mingw32-make -k install

if ERRORLEVEL 1 goto :error

set FILE_TO_PATCH=%QtPrefixDir%\mkspecs\win32-g++\qmake.conf

echo.>>%FILE_TO_PATCH%

echo CONFIG += static>>%FILE_TO_PATCH%

echo BUILT!

goto exitX

:error

echo ERROR!

:exitX

pause

cd %OldDir%

以上的编译的是动态链接库,如果要静态链接库的话可以用下面的脚本。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47
@echo off

rem CONFIGURE BEFORE RUN SCRIPT!!==

set QtSrcDir=%CD%\qt-everywhere-opensource-src-5.9.1

set QtPrefixDir=C:\Qt\5.9.1-x64-static

set MingwDir=C:\mingw-w64\x86_64-7.1.0-posix-seh-rt_v5-rev0\mingw64<br>
set BuildType=-release

set QtSPEC=win32-g++

set LANG = en

rem =======================================================================

PATH = %MingwDir%\bin;%MingwDir%\opt\bin;%SystemRoot%\system32;%SystemRoot%

set FILE_TO_PATCH=%QtSrcDir%\qtbase\mkspecs\win32-g++\qmake.conf

echo %FILE_TO_PATCH%

if exist %FILE_TO_PATCH%.patched goto skipPatch

type %FILE_TO_PATCH%>%FILE_TO_PATCH%.patched

echo.>>%FILE_TO_PATCH%

echo QMAKE_LFLAGS += -static -static-libgcc>>%FILE_TO_PATCH%

echo QMAKE_CFLAGS_RELEASE -= -O2>>%FILE_TO_PATCH%

echo QMAKE_CFLAGS_RELEASE += -Os -momit-leaf-frame-pointer>>%FILE_TO_PATCH%

echo DEFINES += QT_STATIC_BUILD>>%FILE_TO_PATCH%

:skipPatch

set QT_INSTALL_PREFIX = %QtStaticDir%

set OldDir=%CD%

cd %QtSrcDir%

cmd /C "configure.bat -shared %BuildType% -platform %QtSPEC% -prefix %QtPrefixDir% -opensource -confirm-license -c++std c++14 -nomake examples -skip wayland -skip purchasing -skip serialbus -skip qtserialport -skip script -skip scxml -skip speech -skip location -no-opengl -qt-zlib -qt-pcre -qt-libpng -no-libjpeg -qt-freetype -no-openssl"

if ERRORLEVEL 1 goto :error

mingw32-make -r -k -s -j4

if ERRORLEVEL 1 goto :error

mingw32-make -k install

if ERRORLEVEL 1 goto :error

set FILE_TO_PATCH=%QtPrefixDir%\mkspecs\win32-g++\qmake.conf

echo.>>%FILE_TO_PATCH%

echo CONFIG += static>>%FILE_TO_PATCH%

echo BUILT!

goto exitX

:error

echo ERROR!

:exitX

pause

cd %OldDir%

参考资料:

https://wohlsoft.ru/pgewiki/Building_Qt_on_MinGW-w64

https://bugreports.qt.io/browse/QTBUG-64298

标签:Qt5,qt,skip,64bit,w64,echo,set,FILE,PATCH%
From: https://www.cnblogs.com/runtimeerror/p/18653502

相关文章

  • MinGW-w64编译器和编译问题
    1、不同版本的MinGW带有不同GNU版本,默认支持的C++标准不一致,编译时有时会报错,查看默认支持的命令如下echo|g++-dM-E-xc++-|find"cplusplus"(windows)echo|g++-dM-E-xc++-|grep__cplusplus(linux)#define__cplusplus201703L表示默认支持标准为C++172、......
  • Qt5.14.2 编译QtCipherSqlitePlugin ,_mm_aesimc_si128 (__m128i __X)报错解决
    1.在相同的cpu,相同版本的Qt5.14.2不同电脑下,编译由devbean/QtCipherSqlitePlugin作者处下载的源码。未修改任何东西的情况下,同事电脑一键即可编译成功!而本人则是尝试了很多次都无法编译成功!总是报错内联失败,目标特定选项不匹配等问题! 2.尝试多次后,在sqlitecipher.pro文件添......
  • Windows10 64环境下用Qt5.12.12自带的mingw730_64构建编译OpenCV4.1.0时cmake-3.20.6
    一、环境条件说明:操作系统:Windows1064环境编译工具:用Qt5.12.12自带的mingw730_64构建构建对象:编译OpenCV4.1.0的Release64位和Debug64位动态链接库构建工具:CMake中的参数配置二、cmake-3.20.6中的参数配置1、按照下图配置好OpenCV4.1.0的源代码目录和构建编译输出目录,然......
  • Ubuntu20.04安装Qt5.15.2并配置qml_ros_plugin插件
    安装QtQt老版本采用离线安装,新版本采用在线安装器安装,在官网安装速度很慢,一般在国内的源下载。在中科大源下载Qt在线安装器http://mirrors.ustc.edu.cn/qtproject/official_releases/online_installers/安装依赖sudoaptinstallgccg++makecmakebuild-essentiallibgl1-......
  • pyqt5之网格布局
    解决fromPyQt5importQtCorefromPyQt5.QtWidgetsimport*classDemo(QWidget):def__init__(self,parent=None):#这行代码调用了QWidget类的构造函数,以确保Demo类正确地继承了QWidget的属性和方法#初始化父类属性super(Demo,sel......
  • pyqt5线程龟兔赛跑
    哈哈哈#-*-coding:utf-8-*-#Formimplementationgeneratedfromreadinguifile'龟兔赛跑.ui'##Createdby:PyQt5UIcodegenerator5.15.9##WARNING:Anymanualchangesmadetothisfilewillbelostwhenpyuic5is#runagain.Donoteditt......
  • pyqt5之GroupBox
    importsysfromPyQt5.QtWidgetsimportQApplication,QGroupBox,QVBoxLayout,QPushButton,QWidgetapp=QApplication(sys.argv)#创建一个QWidget作为主窗口main_widget=QWidget()#创建一个QGroupBoxgroupBox=QGroupBox("我的分组框")groupBox.setStyleS......
  • pyqt5文件对话框
    对话框选择文件#-*-coding:utf-8-*-#Formimplementationgeneratedfromreadinguifile'QFileDialog.ui'##Createdby:PyQt5UIcodegenerator5.15.9##WARNING:Anymanualchangesmadetothisfilewillbelostwhenpyuic5is#runagain.Do......
  • PyQt5与OpenCV结合的三个小练习
    题目1、简单图像处理创建一个PyQt应用程序,该应用程序能够:1、使用OpenCV加载一张图像。2、在PyQt的窗口中显示这张图像。3、提供四个按钮(QPushButton):一个用于将图像转换为灰度图一个用于将图像恢复为原始彩色图一个用于将图像进行翻转一个用于将图像进行旋转4、当用......
  • 基于vgg16和efficientnet卷积神经网络的天气识别系统(pytorch框架) 图像识别与分类 前
    基于vgg16和efficientnet卷积神经网络的天气识别系统(pytorch框架)前端界面:flask+python,UI界面:pyqt5+python这是一个完整项目,包括代码,数据集,模型训练记录,前端界面,ui界面,各种指标图:包括准确率,精确率,召回率,F1值,损失曲线,准确率曲线等卷积模型采用vgg16模型或efficien......