讨论下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里面各个模块的依赖,其他模块的依赖在编译到该模块的时候才被检测