经过几天的不懈努力,终于把qt5.9.3编译完成(jom编译),现在把自己的编译过程以及注意事项分享出来,希望对大家有帮助。
- 编译之前的准备
- 新的编译环境,最好是最新的干净的windows10环境, 可以搭建个虚拟机环境,也可以重新安装系统环境(本人使用的是新装台式机win10编译环境)。原因:因为整个编译过程会搞乱你的编译环境,整理比较麻烦,不嫌麻烦也可以不需要新的编译环境。
- 配置系统环境信息(重点) 。将win10系统的电脑区域中的位置(美国),语言(英语(美国)),时区(太平洋时间(美国和加拿大)),请注意:控制面板--时钟、语言、区域点击区域进入区域界面,脸面tab页面第三个管理下面更改系统区域设置必须修改为英语(美国),更改完事会提示重新启动,不然qtwebengine、qtwebview、qtnetworkauth等无法编译生成。
- visual studio 2015安装,注意事项:确保win10 SDK成功安装。此处可借助翻墙工具:蓝灯软件(可以在github官网上下载免费的)。
- qt5.9.3源码下载,下载signal下面的(本人使用http://download.qt.io/archive/qt/5.9/5.9.3/single/),下载解压就行。
- ruby installer安装(本人使用ruby installer-2.4.1-1-x64.exe版本), 并设置环境变量(此处环境变量应该会自动设置,需要查看下当前的环境变量设置)。
- python-2.7.13.amd64.msi, 并设置环境(python编译器安装完成会自动添加环境变量,可以在环境变量里面查看)(暂时不要使用python3)
- icu,并设置环境变量(路径,如:d:/icu,本人直接解压到qt包压缩的位置(d:/qt5.9.3/icu))。
- jom,并设置环境变量
- ninja 安装
- ActivePerl安装(本人使用ActivePerl-5.24.1.2402-MSWin32-x64-401627.exe版本), 并设置环境变量(此处环境变量应该会自动设置,需要查看下当前的环境变量设置),用于openssl编译。
- nasm-2.14rc0-installer-x64.exe,并设置环境变量(..\..\NASM 添加到系统环境变量 Path 中),用于openssl编译;
- 解压openssl源码(本人openssl-1.0.2l.tar.gz)并配置编译Release版本Openssl(编译的是x64的),将生成的openssl库放到qt编译下面(本人放到D:qt5.9.3\openssl)。编译步骤其余博客都有,此处就不写了,注意:不要编译32位的
- 注意事项:执行脚本过程中可能会提示源文件格式问题,根据提示修改文件格式。
- 编译过程
- 生成个.bat文件,修改以下脚本(放到qt解压的根目录就行)并执行,编译过程比较长,具体看机器性能了(下面CSDN的标号实在去掉不了,头痛,大家复制的时候注意去掉,回头研究)
- set msvc_path=D:\Program Files\Microsoft Visual Studio 14.0
- set make_spec=win32-msvc
SET CL=/MP
set src_path=E:\qt\qt5
set dst_path=%src_path%\qtlibs
set icu_path=%src_path%\icu
set openssl_path=%src_path%\openssl
set PATH=%src_path%\qtbase\bin;%src_path%\qtbase\lib;%src_path%\gnuwin32\bin;%PATH%
set LIB=%LIB%;%icu_path%\lib;%openssl_path%\lib
set INCLUDE=%INCLUDE%;%icu_path%\include;%openssl_path%\include
set PATH=%PATH%;%icu_path%\bin;%openssl_path%\bin;%icu_path%\lib;%openssl_path%\lib
call "%msvc_path%\VC\vcvarsall.bat" amd64
call configure -mp -opensource -confirm-license -platform %make_spec% -debug-and-release -force-debug-info -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -icu -openssl -nomake examples -nomake tests -prefix %dst_path%
jom(nmake)
jom install(nmake install)
jom clean(nmake clean)
xcopy /y /k "%icu_path%\bin\icudt58.dll" "%dst_path%\bin\"
xcopy /y /k "%icu_path%\bin\icuin58.dll" "%dst_path%\bin\"
xcopy /y /k "%icu_path%\bin\icuio58.dll" "%dst_path%\bin\"
xcopy /y /k "%icu_path%\bin\icutest58.dll" "%dst_path%\bin\"
xcopy /y /k "%icu_path%\bin\icutu58.dll" "%dst_path%\bin\"
xcopy /y /k "%icu_path%\bin\icuuc58.dll" "%dst_path%\bin\"
xcopy /y /k "%icu_path%\lib\icudt.lib" "%dst_path%\lib\"
xcopy /y /k "%icu_path%\lib\icuin.lib" "%dst_path%\lib\"
xcopy /y /k "%icu_path%\lib\icuio.lib" "%dst_path%\lib\"
xcopy /y /k "%icu_path%\lib\icutest.lib" "%dst_path%\lib\"
xcopy /y /k "%icu_path%\lib\icutu.lib" "%dst_path%\lib\"
xcopy /y /k "%icu_path%\lib\icuuc.lib" "%dst_path%\lib\"
xcopy /y /k "%openssl_path%\bin\libeay32.dll" "%dst_path%\bin\"
xcopy /y /k "%openssl_path%\bin\ssleay32.dll" "%dst_path%\bin\"
xcopy /y /k "%openssl_path%\lib\libeay32.lib" "%dst_path%\lib\"
xcopy /y /k "%openssl_path%\lib\ssleay32.lib" "%dst_path%\lib\"
- 发布(Release)
- 其实经过上面的编译过程,大部分库可以编译出来了,具体根据需要可以更改上面批处理(.bat)文件的configure的参数
- 为什么要发布呢,因为生成的Qt5Cored.dll(Qt5Core.dll),特别操蛋,因为我们编译出来的QtWebEngineProcess.exe(QtWebEngineProcessed.exe)路径记录问题。
- Qt程序打包发布下即可(网上都有),具体是从开始菜单打开 Qt 命令行,输入命令:cd /d D:\hellomw
然后使用 windeployqt 工具命令:windeployqt hellomw.exe发布即可。