Qt 5的git源码编译
由于一些需求,需要接触Qt3D。虽然Qt 3D还没有问世,但是据称已经差不多完成了。Qt 3D的内部版本是2.0,将会并入Qt 5.5中。现在还是有一些途径来获取Qt 3D的。那就是使用git获取最新的源码进行编译。花了好几天的时间,终于成功了。下面分享一下心得。
蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/43404647。欢迎同行前来探讨。
1、下载并且安装git forwindows。git是开源世界协同工作的版本控制工具,这里下载就不再赘述了。
2、下载ActivePerl,在生成repository的时候是非常有用的。下载地址
3、找到Qt 5的gitorious镜像
[email protected]:qt/qt5.git
可以使用https协议clone,也可以使用git协议clone。如果使用git协议进行clone,需要ssh。使用git bash,输入ssh-keygen,按照提示生成公钥和私钥。在gitorious网站中进行注册,最后将生成的id_rsa.pub编辑复制粘贴到gitorious网站中。
4、随便找一个文件夹,比如说
G:/Qt5-Dev
在这里面点击右键菜单,有一个git bash,在这里就可以进行菜单操作了。
5、首先将远程的数据clone下来。
git clone [email protected]:qt/qt5.git .
6、因为在git bash中,是msys交互环境,也就是和Unix一样的sh环境,这个和Windows的命令提示符(CommandPrompt)不一样,所以要按照Unix的方法设置环境变量。
export PATH=\
/e/Develop/Perl64/bin:\
/e/Develop/Git/bin:\
/e/Develop/Qt5.4/Tools/mingw491_32/bin:\
/e/Develop/Python3.4
这里让Perl的位置在Git之前,因为ActivePerl是官方推荐的Perl,Git中也有Perl,但是我尝试了一下,使用下列命令的时候会出错:
"GetOptionsFromArray" is notexported by the Getopt::Long module
Can‘t continue after import errors atinit-repository line 196
BEGIN failed--compilation aborted atinit-repository line 196.
导致无法进行,所以尽量使用ActivePerl来完成任务。
7、使用Perl命令添加库
标准情况下,使用
perl init-repository就可以了。
如果需要指定初始化的库,那么使用–module-subset指定模块。因为我需要选用并且测试Qt3D,所以这么写:
perl init-repository–module-subset=qtbase,qtsvg,qtdeclarative,qttools,qtxmlpatterns,qtdoc,qlalr,qtrepotools,qtqa,qtlocation,qtgraphicaleffects,qtimageformats,qtxmlpatterns,qtquickcontrols,qt3d
如果上次没有完成,那么可以指定-f来强制重新初始化。这其中可能要求多次输入密码,密码没有回显,请注意。
8、这个时候开始configure编译了,一般来说只需要
configure.bat ^
-developer-build -confirm-license-opensource ^
-debug-and-release
就可以了。
9、使用mingw32-make进行编译。命令是
mingw32-make -j 4
使用四个线程对Qt进行编译。
10、由于是developer-build,最好不要makeinstall,直接在源码上使用吧。因为开发者版可能有各种各样的问题,所以在这个时候排错会好一些。我就是使用debug版进行错误排除的。