介绍:
QT5.15以上版本已经不提供现成的集成软件了。所以当我们项目中需要用到5.15以上的版本时,只能自己对源码进行编译来生成一个环境了(Qt提供了在线升级,但是在线升级中没有MinGW版本了)
背景:
我们想要编译源码,首先肯定需要下载源码。(下载地址)
由于编码原因,zip格式的只能用在Windows环境,tar.xz用于linux环境。
下载完源码之后,进行解压(这里介绍linux环境):
解压完成后,跟们编译源码会用到configure文件,到了这一步就很关键了,我们对configure的配置直接影响构建和编译是否成功。
这里有一篇文章讲了configure后面带的配置的具体含义,有兴趣的可以仔细研究下。
方法:
重要:有些模块编译能否成功需要关联库,如果我们不需要这些模块,我们可以跳过这些模块,但是构建失败提示的模块内容往往不是我们需要跳过的名称。
例如输入-skip 3dcore来跳过对应模块时,你会发现提示qt3dcore不存在。
为什么这样呢,因为根本就没有叫做3dcore、3drender模块名,这个时候我们需要找到对应的模块名,需要从目录里面找,如下:
从一层层目录中我们找到了对应的模块,这个时候我们想要跳过这个模块,就可以带qt3d这个名称达到跳过的效果(-skip qt3d)。
我这里提供一个脚本,一般情况下可以直接用(目前编过5.15.2和5.15.15)。
#! /bin/bash
#如果没有GCC、G++ 请安装
#sudo apt install build-essential gdb #安装编译器和调试器
#sudo apt-get install g++
#sudo apt-get install gcc
#静态编译前安装一下包
#sudo apt-get install libx11-*
#sudo apt-get install libx11*
#sudo apt-get install libxcb-*
#sudo apt-get install libxcb*
#sudo apt-get install libxkbcommon-devsudo
#sudo apt-get install libxkbcommon-x11-dev
#sudo apt-get install libxcb-xinerama0-dev
#sudo apt-get install libxcb-sync-dev
#configue配置
QT_INSTALL_PATH="-prefix /home/forlinx/Qt5.15.2" #Qt安装路径(自己修改)
QT_COMPLIER+="-platform linux-g++-64" #编译器
#CONFIG_PARAM+="-static " #静态编译
CONFIG_PARAM+="-release " #编译release
CONFIG_PARAM+="-recheck-all "
CONFIG_PARAM+="-nomake examples " #不编译examples
CONFIG_PARAM+="-nomake tests " #不编译tests
CONFIG_PARAM+="-nomake tools "
CONFIG_PARAM+="-xcb "
CONFIG_PARAM+="-qt-zlib "
CONFIG_PARAM+="-qt-libpng "
CONFIG_PARAM+="-qt-libjpeg "
CONFIG_PARAM+="-qt-freetype "
CONFIG_PARAM+="-qt-sqlite "
CONFIG_PARAM+="-no-rpath "
CONFIG_PARAM+="-no-gif "
CONFIG_PARAM+="-no-pch "
CONFIG_PARAM+="-no-avx "
CONFIG_PARAM+="-no-openssl "
CONFIG_PARAM+="-no-cups "
CONFIG_PARAM+="-no-dbus "
CONFIG_PARAM+="-no-pkg-config "
CONFIG_PARAM+="-no-opengl "
CONFIG_PARAM+="-no-glib "
CONFIG_PARAM+="-no-iconv "
CONFIG_PARAM+="-make libs "
CONFIG_PARAM+="-strip "
CONFIG_PARAM+="-skip qtx11extras " #如果编译了xcb则需不能跳过它
CONFIG_PARAM+="-skip qtsensors "
CONFIG_PARAM+="-skip qtserialbus "
CONFIG_PARAM+="-skip qtwebsockets "
CONFIG_PARAM+="-skip qtwebchannel "
CONFIG_PARAM+="-skip qtquickcontrols "
CONFIG_PARAM+="-skip qtpurchasing "
CONFIG_PARAM+="-skip qtconnectivity "
CONFIG_PARAM+="-skip qtscxml "
CONFIG_PARAM+="-skip qtxmlpatterns "
CONFIG_PARAM+="-skip qtnetworkauth "
CONFIG_PARAM+="-skip qtspeech "
CONFIG_PARAM+="-skip qtscript "
CONFIG_PARAM+="-skip qtcharts "
CONFIG_PARAM+="-skip qtgamepad "
CONFIG_PARAM+="-skip qtandroidextras "
CONFIG_PARAM+="-skip qtmacextras "
CONFIG_PARAM+="-skip qtremoteobjects "
CONFIG_PARAM+="-skip qtdatavis3d "
CONFIG_PARAM+="-skip qtwebengine "
CONFIG_PARAM+="-skip qtlocation "
CONFIG_PARAM+="-skip qt3d "
#选择Qt版本(开源, 商业), 并自动确认许可认证
CONFIG_PARAM+="-opensource " #编译开源版本, -commercial商业版本
CONFIG_PARAM+="-confirm-license " #自动确认许可认证
echo "./configure $CONFIG_PARAM $QT_COMPLIER $QT_INSTALL_PATH"
./configure $CONFIG_PARAM $QT_COMPLIER $QT_INSTALL_PATH
5.15.2linux x86源码.
5.15.15linux x86源码
环境配置:
源码编译好后,你会发现创建一个项目并不能直接用,我们需要配置对应的环境。
Qt Version配置:
Compilers不用配置,因为我们编译源码前GCC就已经安装了,在Compilers会自动识别出来。
把库文件配置成系统库,
进入到/etc/ld.so.conf.d目录,创建自己的.conf文件。
按照以上截图配置自己的源码环境。
测试:
打开qtcreator创建一个项目测试。