首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

讨论上Windows平台怎么编译Qt5

2013-01-07 
讨论下Windows平台如何编译Qt5?Qt5的编译官方有一篇wiki:http://developer.qt.nokia.com/wiki/Building_Qt

讨论下Windows平台如何编译Qt5?
Qt5的编译官方有一篇wiki:http://developer.qt.nokia.com/wiki/Building_Qt_5_from_Git
简要的总结下我的体会,欢迎补充完善、批评指正。

1.First clone the top-level qt5 git repository:

git clone git://gitorious.org/qt/qt5.git qt5

这一行不用说了,自然是将Qt5的代码克隆。不过,如果你只是初次克隆Qt5的代码,会很惊讶:为何克隆后的代码只有十几MB?
原来,Qt5已经实现了Qt的模块化,详见:http://labs.qt.nokia.com/2011/05/12/qt-modules-maturity-level-the-list/
所以可以在克隆得到的Qt5源码根目录下看到:.gitmodules 文件,其内容部分摘录如下:
[submodule "qtbase"]
path = qtbase
url = git://gitorious.org/qt/qtbase.git
[submodule "qtsvg"]
path = qtsvg
url = git://gitorious.org/qt/qtsvg.git
[submodule "qtdeclarative"]
path = qtdeclarative
url = git://gitorious.org/qt/qtdeclarative.git
...

这时,有Git基础的朋友一定会想到:
git submodule init
git submodule update

不过,请不要这样做!

2. Following the README file we initialize the repository. This clones the various sub-modules of Qt5:
./init-repository

这是一个perl脚本。如果是在msys-git下,会发现Perl的版本不够。
我们需要安装一个Windows版本的Perl:http://www.activestate.com/activeperl/downloads
安装好以后,Perl就添加到PATH环境变量中去了。
在MSVC的控制台下执行:
perl init-repository --help

注意,不是直接执行init-repository,要用perl来执行它。看看帮助:大致了解下有哪些功能。

3. 注意它的三个小提示:
Hint1: If you’re going to contribute to Qt 5, you’ll need to pass the —codereview-username <Jira/Gerrit username> option to set up a “gerrit” remote for all the sub-modules.
Hint2: If you’re having problems downloading the webkit repository (which is quite big), you can pass —no-webkit.
Hint3: If you’re behind a firewall, pass —http


4. 我的方法:
perl init-repository -f --codereview-username loaden

这样就可以实现子模块的批处理了。特别要注意的是:在处理这些子模块时,其实是git clone了这些子模块,以致于他们可以独立使用。在qt5\qtbase目录下可以找到.git目录。
这与git submodule update的结果是不一样的!!
同时我使用了codereview的用户名,是为了可以创建一个名为gerrit的远程仓库,可以将贡献的代码推送进去,类似:
git push gerrit HEAD:refs/for/master


5. 源码下载是非常慢的,因为QtWebkit达到了1.7GB。源码下载完成后,进入Qt5源码目录,配置环境变量:
set PATH=%CD%\qtbase\bin;%PATH%

之后echo看一下结果是否正确:
echo %PATH%


6. 建议直接在Qt5的源码目录下执行配置!
configure -confirm-license -opensource -release -shared -platform win32-msvc2010 -fast -no-stl -no-qt3support -nomake examples -nomake demos -nomake tests


7. 编译全部模块,直接执行nmake就可以了。如果只编译一个模块,可以这样:
nmake module-qtbase

双击打开Qt5目录下的Makefile文件,可以看到有这些模块:
SUBTARGETS    =  \
module-qtbase \
module-qtsvg \
module-qtphonon \
module-qtxmlpatterns \
module-qtdeclarative \
module-qttools \
module-qttranslations \
module-qtdoc \
module-qlalr \
module-qtqa \
module-qtlocation \
module-qtactiveqt \
module-qtsensors \
module-qtsystems \
module-qtmultimedia \
module-qtfeedback \
module-qtquick3d \


module-qtdocgallery \
module-qtpim \
module-qtconnectivity \
module-qtwayland \
module-qtjsondb \
sub-qtwebkit-pri \
module-qtwebkit-examples-and-demos


欢迎交流!
[解决办法]

[解决办法]
原来邓总搞QT去了。
[解决办法]
有空尝尝鲜,有段时间没关注更新了
[解决办法]
老邓是先驱啊......
我编译Qt5的时候是在Linux下的倒没有如此纠结....
[解决办法]
QT为何物,把酒问青天...
[解决办法]
qt5了?还没有用上qt4.8的 …… 
[解决办法]
“双击打开Qt5目录下的Makefile文件,可以看到有这些模块”

怎么没有看到 QtNetwork? 还有,没看到你配DShow、D3D环境,phonon怎么编译过的,难道Qt5不检查依赖了?
[解决办法]
接口变的很多么?
如果没什么变化,自然就没什么-no-qt4support

不知道Qt5实现的目标是什么
现在4.8还没Release呢
[解决办法]
终于给我编译成功了,不过给我运行了一下designer.exe,一看那界面,心哇凉哇凉的,字体非常淡,界面风格也不是windows风格,运行了一下assistant.exe,就崩溃了.新建了一个程序,运行起来后,界面依然不是windows风格,也是那种字体非常淡的那种,看来QT5现在还不能投入使用啊,又换回了4.74版本
[解决办法]
为什么我在执行init-repository命令时会提示“cat: write error: Bad file number”的错误?
我是网通的宽带,--ssh 和--http两个参数都试过,结果一样。
[解决办法]
这帖不错 有实际效果。。。
[解决办法]
引用:
“双击打开Qt5目录下的Makefile文件,可以看到有这些模块”

怎么没有看到 QtNetwork? 还有,没看到你配DShow、D3D环境,phonon怎么编译过的,难道Qt5不检查依赖了?

QtNetwork模块位于qtbase目录下
仍然检查依赖关系,但因为模块化的缘故,在运行configure的时候只检测了qtbase里面各个模块的依赖,其他模块的依赖在编译到该模块的时候才被检测

热点排行