Windows下mingw编译Qt源代码

最近由于某些需要(至于何种需要就不细说,免得伤神),需要编译Qt的源代码。

1、下载源代码

首先在Qt官网上下载qt的源代码,由于我需要编译的版本是5.4.1,所以我下载的是qt-everywhere-opensource-src-5.4.1。在下载的源码当中,有个README文件,简单介绍如何编译Qt5,所以还是不叫简单的。我将代码解压到C:\QtSource目录下,并在该目录下建一个qtbin的目录去存放编译好的库。

C:\QtSource

     |----qtbin

     |----qt-everywhere-opensource-src-5.4.1

            |-----....(源代码目录)

2、必要依赖安装

我要用Mingw来编译,所以我也不需要vs编译器。

安装Qt5.4.1,其实是为了用里面的自带的mingw,这样可以用5.4.1对应的编译器版本来自己编译。

安装Perl,版本是5.12或更新的即可,将其路径添加到系统变量。

安装Python,2.7版本或更新版本,同样添加到系统变量。

安装Ruby,1.9.3版本或更新,照样添加到系统变量。

3、启动控制台程序

启动安装的Qt5.4.1目录里的Qt 5.4 for windows(mingw 4.9 32bit)控制台程序。这样做会自动将mingw编译器也添加到环境变量。

4、configure

配置的目的是为了以什么条件去生成makefile,以供编译器使用。

我使用的配置命令是:

configure -prefix C:\QtSource\qtbin -opensource -nomake tests -nomake examples -confirm-license -opengl desktop -platform win32-g++ -skip qtactiveqt -skip qtandroidextras -skip qtconnectivity -skip qtdeclarative -skip qtdoc -skip qtenginio -skip qtgraphicaleffects -skip qtimageformats -skip qtlocation -skip qtmacextras -skip qtmultimedia -skip qtquick1 -skip qtquickcontrols -skip qtscript -skip qtsensors -skip qtserialport -skip qtsvg -skip qttools -skip qttranslations -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebkit -skip qtwebkit-examples -skip qtwebsockets -skip qtwinextras -skip qtx11extras -skip qtxmlpatterns

简要说明下,-prefix后面的目录是在install时,生成的目标目录。-nomake是不变异测试和例子,-opensource和-confirm-license是在开源版本,接受LGPL等协议,-opengl制定opengl为桌面,-platfirm制定平台为win32-g++,-skip跳过好多模块,我只留下了qtbase。

5、mingw32-make

在控制台内输出此指令开始编译。

漫长的等待并不无聊,因为有可能出现问题,比如cll.exe启动出错等,我也不知到是什么原因导致编译器的一些程序启动失败,没关系,关闭提示框,然后重新接着执行mingw32-make指令即可,因为编译过程通过qt的super cache存储了,哪些编译完成它都有记录,所以不用担心重复的编译浪费时间。

另一个问题是,你认为停止关闭(关闭那个控制台程序),那么再次编译的时候,某些文件可能被锁,导致提示没有权限访问的错误,这种情况我也不知道怎么办,把编译了一半的源代码全部清空删除,重新拷一份,重新执行上面的配置,重新编译。这好悲剧,不过我也不知道怎么去解决,也没去网上搜。

6、mingw32-make install

如果编译顺利完成,那么可以执行这个命令,将编译的库还有一些对应头文件之类的放到你通过-prefix制定的目录内。

发表评论

电子邮件地址不会被公开。 必填项已用*标注