由于Qt官方发布的Qt 5.6.1二进制安装包没有对应VS2010版本的,而我的电脑上只安装了VS2010,因此只能自己编译。

本文记录本人的编译安装过程,以及其中遇到的一些问题。

本文使用VS2010 32位编译Qt 5.6.1。

1. 下载Qt源代码

Qt源代码下载地址:https://www.qt.io/download-open-source/

或直接到下载汇总目录:http://download.qt.io/archive/

其中,Qt 5.6.1的下载目录为:http://download.qt.io/archive/qt/5.6/5.6.1/

见下图:



从上图中可以看到,Qt 5.6.1官方提供的VS版本只有VS2013和VS2015。

由于我的电脑上只有VS2010(至于原因,对我来说VS2010是用得最久的,并且越高的版本的VS占用的空间越大,

微软的东西实在庞大得吓人,所以一直没有更换更高版本的VS),所以只能下载Qt源码自己编译。

Qt 5.6.1源码在上图中的single目录中,见下图:



上图中的几个压缩包的内容是一样的,但是.7z格式的文件是最小的,所以就下载.7z格式的就行啦(前提是你的电脑能解压.7z格式的压缩包)。

2. 将Qt源代码压缩包解压

下载后得到qt-everywhere-opensource-src-5.6.1.7z文件。

然后将此压缩包解压,此时需要注意解压到的目录位置:由于编译(即执行nmakejom)后得到的文件(包括.prl.dll等)会携带源代码路径信息,

所以最好一开始就把源代码放在一个对的位置,并且编译后不要移动或删除。

(注:但执行nmake installjom install后源代码路径信息就被去掉了,所以上面一段可以不必在意。)

我之前曾特意为此在虚拟机中测试安装了qt-opensource-windows-x86-msvc2015-5.6.1.exe,安装后安装目录的结构如下:

  1. D:\ProgramFiles\Qt\5.6.1
  2. ├─5.6
  3. │ ├─msvc2015
  4. │ └─Src
  5. ├─Docs
  6. ├─Examples
  7. ├─Tools
  8. └─……(其他不重要的目录或文件)

因此,我直接将qt-everywhere-opensource-src-5.6.1.7z解压到D:\ProgramFiles\Qt\5.6.1\5.6目录下,

然后将得到的文件夹qt-everywhere-opensource-src-5.6.1重命名为Src

3. 安装依赖环境

根据Qt 5.6.1源代码中的README可以知道,编译Qt 5.6.1之前需要安装几个环境:

Qt 5 can make use of the ICU libraries providing Unicode and Globalization

support (see http://site.icu-project.org/). They are required for building QtWebKit.

On Windows, they need to be manually installed and the "include" and "lib"

folders of the ICU installation must be appended to the INCLUDE and LIB

environment variables after calling the Windows SDK setup script.

The "bin" folder of the ICU installation should be appended to the PATH

environment variable in order to for the DLLs to be found at run-time.

  • DirectX SDK (DirectX 9 or 11)

For Qt Quick 2 to work, a graphics driver that provides OpenGL 2.1 or higher is required.

The default driver from Windows is OpenGL 1.1. Qt includes a version of the ANGLE project

which is included from the Windows Qt installers.

ANGLE implements the OpenGL ES 2.0 API on top of DirectX 11 or DirectX 9.

ANGLE requires that the DirectX SDK is installed when building Qt.

于是,我安装了如下几项:

(注:我将ICU安装压缩包icu4c-54_1-Win32-msvc10.zip解压到D:\ProgramFiles\ICU目录下,

并重命名为icu4c-54_1-Win32-msvc10,即得到D:\ProgramFiles\ICU\icu4c-54_1-Win32-msvc10。下面会用到这个目录。)

4. 开始编译安装

D:\ProgramFiles\Qt\5.6.1\5.6\Src目录中新建一个批处理文件,命名为my_build_vs2010_x86.bat,用文本编辑器打开之,编辑内容如下:

  1. ECHO on
  2. ECHO 本批处理脚本参考:http://doc.qt.io/qt-5/windows-building.html
  3. ECHO 和 http://www.myext.cn/other/a_30787.html
  4. ECHO;
  5. ECHO 设置Microsoft Visual Studio 2010 x86环境...
  6. CALL "D:\ProgramFiles\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
  7. ECHO;
  8. ECHO 设置Qt源代码路径...
  9. SET QTSRC_DIR=D:\ProgramFiles\Qt\5.6.1\5.6\Src
  10. SET PATH=%QTSRC_DIR%\qtbase\bin;%QTSRC_DIR%\gnuwin32\bin;%PATH%
  11. SET QMAKESPEC=win32-msvc2010
  12. ECHO;
  13. ECHO 设置ICU路径...
  14. SET INCLUDE=D:\ProgramFiles\ICU\icu4c-54_1-Win32-msvc10\include;%INCLUDE%
  15. SET LIB=D:\ProgramFiles\ICU\icu4c-54_1-Win32-msvc10\lib;%LIB%
  16. SET PATH=D:\ProgramFiles\ICU\icu4c-54_1-Win32-msvc10\bin;%PATH%
  17. ECHO;
  18. ECHO 按任意键,进行configure...
  19. @PAUSE>NUL
  20. ECHO 开始configure...
  21. CALL configure -prefix %QTSRC_DIR%\..\msvc2010_x86 -opensource -confirm-license -platform win32-msvc2010 -debug-and-release -nomake tests -nomake examples -opengl dynamic -mp
  22. ECHO;
  23. ECHO 按任意键,开始make...
  24. @PAUSE>NUL
  25. CALL jom
  26. ECHO;
  27. ECHO 按任意键,开始install...
  28. @PAUSE>NUL
  29. CALL jom install
  30. REM 重新配置和编译请使用
  31. REM nmake distclean 或jom clean

(注:上面脚本中的编译步骤使用了Qt Creator的jom工具,如果还未安装Qt Creator,则需要将上面脚本中的jom替换成nmake。)

上面这个脚本里面已经写了较全面的注释,在此就不一一解释了。

然后再在此目录下新建一个批处理文件,命名为my_build_vs2010_x86_and_log.bat,用文本编辑器打开之,编辑内容如下:

  1. @CALL %SystemRoot%\system32\cmd.exe /E:ON /V:ON /k "my_build_vs2010_x86.bat" 2>&1 |mtee/d/t/u/+ my_build_vs2010_x86.log

其中的mtee是一个用于Windows批处理输出重定向的一个小工具,可以到此下载

下载之后安装,把mtee.exe所在路径添加到系统Path环境变量中就可以了。

使用mtee是为了在命令行窗口显示输出的同时将过程中的所有输出记录到文件。

然后双击运行my_build_vs2010_x86_and_log.bat,即可自动完成Qt 5.6.1的编译和安装。

运行结束后得到log文件my_build_vs2010_x86.log即为过程中的所有输出的记录。

5. 后续处理

编译安装完成之后,可以直接把源代码目录Src删除。

如果想保留源代码,可以在源代码目录执行jom cleannmake distclean(因为编译过程在源代码目录产生了大量的中间文件),

或者可以将源代码目录删除后重新把之前下载的源代码压缩包解压到相同位置。

最后就是在Qt Creator中配置Qt路径了,比较简单,就不再赘述了。

至此,Qt 5.6.1在VS2010平台下的编译全部完成。

使用VS2010编译Qt 5.6.1过程记录的更多相关文章

  1. VS2010编译Qt程序失败------error LNK1123: 转换到 COFF 期间失败:

    error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏使用VS2010编译VC++项目的时候可能会出这个问题. 据说升级到SP1后可能问题解决,但是下载量太大,目前没有得到证实. ...

  2. linux-i386(ubuntu)下编译安装gsoap_2.8.17过程记录

    过程记录 :  1.下载gsoap_2.8.17.zip 并 解压 : $unzip gsoap_2.8.17.zip     2.进入解压后的目录gsoap-2.8   3.自动配置编译环境:  $ ...

  3. [原创]Nexus5 源码下载、编译、真机烧录过程记录

    asop使用清华镜像源https://mirror.tuna.tsinghua.edu.cn/help/AOSP/ 一开始使用每月初始化包的方式因为无法搞定版本的问题,没能通过编译,无奈,老老实实一点 ...

  4. VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

    下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip, 不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0 ...

  5. 亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

    下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0- ...

  6. qt4.8.7 源码在win7+vs2010环境的x64编译(qt 64位)

    由于qt官网上,没有直接提供x64的安装包,但由于项目需要x64的qt,所以,小编不得不下载qt的源码,经历了一次长达约4个小时的编译过程.今年国庆7天,就遭这事上了,哈哈~~~ 几个下载链接: qt ...

  7. 【Qt】VS2010编译Qt5.3.2 64bit

    1. 为什么要这么做 在Windows下,Qt官网默认提供的二进制版本大多是32位,目前(2015.01.24)只对VS2013提供了64位版本,如下图所示: 为了适应我目前安装的VS2010 IDE ...

  8. 使用VS2010编译64的Geos库

    Geos库在cmake中总是报错,所以我决定试试nmake编译64位的库.现将编译过程记录如下: 1.下载Geos,我下的是最新版3.5.0,地址在 http://trac.osgeo.org/geo ...

  9. 【Qt】命令行编译Qt程序(nmake)【转】

    简述 前两节讲解了如何在Visual Studio和Qt Creator中搭建Qt开发环境,并分享了我们第一个小程序-Hello World. 下面分享如何使用命令行来编译Qt程序.当然,MSVC和M ...

随机推荐

  1. 基于C/S架构的3D对战网络游戏C++框架 _06搭建C/S架构的基本通信框架(尚未写完会重新编辑后再发出)

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  2. Webpack:前端资源模块化管理和打包工具

    一.介绍: Webpack 是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生 产环境部署的前端资源.还可以将按需加载的模块进行代码分隔,等到实际需要的时候再 ...

  3. js版面向对象图片放大镜

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>放 ...

  4. spring mvc文件上传(单个文件上传|多个文件上传)

    单个文件上传spring mvc 实现文件上传需要引入两个必须的jar包    1.所需jar包:                commons-fileupload-1.3.1.jar       ...

  5. java利用JDK调用并执行js源码

    前言: 不同开发语言之间具有通用性,更具有协作调用的可能.有时候对于一些场景会有调用js的需求,因此下面展示了一个java利用自身JDK调用js函数的demo,供感兴趣的朋友参考. js函数文件 ex ...

  6. MSMQ学习

    一.理论准备 MSMQ(MicroSoft Message Queue,微软消息队列)官方的解释是:在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布 ...

  7. ajax两张传输数据方式

    encodeURI() 函数可把字符串作为 URI 进行编码. 语法 encodeURI(URIstring) 参数 描述 URIstring 必需.一个字符串,含有 URI 或其他要编码的文本. 返 ...

  8. sql server 读取excel里的数据

    以下是执行的sql代码,只拿简单读取数据举例,其他详细的,请自行查看 reconfigure RECONFIGURE GO GO SELECT * FROM OPENROWSET('Microsoft ...

  9. JavaScript工具代码

    html编码 function htmlEscape(sHtml){ return sHtml && sHtml.replace(/[<>&"]/g, f ...

  10. bzoj 4326: NOIP2015 运输计划

    4326: NOIP2015 运输计划 Time Limit: 30 Sec Memory Limit: 128 MB Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个 ...