1.编译的前的基础了解

目标platforms(平台),编译静态库或者动态库,skip某个功能模块等选项

2.源码下载

两种方式:1.直接下载,下载地址:http://download.qt.io/archive/qt/,2.git clone Qt源码,仓库地址:https://code.qt.io/qt/qt5.git。推荐使用git克隆的方式,这样在编译生成目标库时,你可以通过git清楚的了解到文件变化情况。git clone步骤:1.git clone https://code.qt.io/qt/qt5.git。2.cd qt5。3.git checkout 版本。4.git submodule update --init --recursive。

2.编译工具安装

(1)下载安装visual studio 2015

(2)安装ActivePerl:https://www.activestate.com/activeperl,安装并设置PATH,我安装的是 ActivePerl-5.26.1.2601-MSWin32-x64-404865.exe   

       ActivePerl一个perl脚本解释器。其包含了包括有 Perl for Win32、Perl for ISAPI、PerlScript、Perl Package Manager四套开发工具程序,可以让用户编写出适用于unix,windows,linux系统的CGI程序来。安装的只是perl的一个解释程序啦,外观上也不会发生什么变化,你在windows的cmd界面里输入perl -v可查看你所安装的版本。在你编译perl程序时会用到它。若要编写perl程序需借助其它工具:notepad,eclipse.vim,eclim……用这些编写工具写好后存储成perl格式,就可用activeperl去编译喽!

      CGI 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据库API 与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、VB 和Delphi 等。CGI 分为标准CGI 和间接CGI两种。标准CGI 使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI 又称缓冲CGI,在CGI 程序和CGI 接口之间插入一个缓冲程序,缓冲程序与CGI 接口间用标准输入输出进行通信。

  • 环境变量中path已经添加了activeperl的路径

(3)安装Python,推荐使用Python 2.x版本,因为Python 3.x与Python 2.x在一些方法上有改动, 例如print方法 ,Qt使用的    是Python 2.x的API,下载地址:https://www.python.org/downloads/,安装并设置PATH。

3.配置编译选项

在开始菜单里进入Visual Studio 2015文件夹,打开“VS2015 x64本机工具人员命令提示符”,进入cmd窗口模式:1.cd 下载的Qt源码目录;2.执行configure -prefix E:\\QtSource\build -release -opensource -static -force-debug-info -opengl dynamic -platform win32-msvc -c++std c++11 -skip qtmultimedia -skip qtsensors -skip qtwebengine -skip qtgamepad -nomake examples -nomake tests -mp -skip qtlocation -skip qtserialbus -confirm-license命令配置编译选项,下面就对这些参数做简要的说明。

4.configure参数说明

-prefix 生成目标库的目录

-release 生成release版本  -debug 生成debug版本  -debug-and-release生成debug和release版本

-opensource 编译开源版  -commercial 编译商业版 (参数可选)

-static 生成静态库lib文件  -shared 生成动态库dll文件 (参数可选,默认是shared)/*** 注:静态库与动态库区别是在生成目标文件的链接方式上,静态库采用静态链接,在生成的目标文件(如.exe文件)中会包含库文件代码,而动态库在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入。***/

-force-debug-info 强制生成调试信息 (参数可选)/*** 这个参数是让Qt release版本也生成.pdb文件。这个文件有什么作用呢?它就是我们在release版本下设置了异常捕获信息函数,打印出错堆栈信息所必须的文件。如果程序没用开启异常捕获选项,是不需要开启这个参数的。***/

-opengl dynamic 指定opengl库 (参数可选) /*** 关于这个参数说明请参考doc.qt.io/qt-5/windows-requirements.html ***/

OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。

OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在 PC、工作站超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。

-platform win32-msvc 目标库运行平台

-skip 跳过该模块

-nomake 不编译该模块

-mp 启动多核编译

注:-skip和-nomake都可省略,但是-skip qtwebengine这个参数不能省略,qtwebengine模块有需要依赖的库,这里不跳过编译会失败。

5.make && make install

等待configure命名执行完成后,输入nmake开始编译,如果结果没有错误,输入nmake install等待结束,完成。

 

注:Qt源码要成功编译注意以下因素:1.检查编译Qt的必须工具是否正确安装,并检查PATH值是否正确。2.启动vs 2015那个命令窗口,而不是普通的那个cmd窗口。3.-skip qtwebengine参数一定不能省略,否则编译会失败。

 

参考资料:

1.Qt编译官方文档:http://doc.qt.io/qt-5/build-sources.html

2.configure参数详细说明:http://www.cnblogs.com/elect-fans/archive/2012/03/28/2420647.html

3.Qt源码编译:http://blog.csdn.net/xiaoxiaoyusheng2012/article/details/45196879

4.msvc2015 编译Qt源码https://blog.csdn.net/u012361112/article/details/78982257

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐