Qt最新版5.12.2在Win10环境静态编译安装和部署的完整过程(VS2017)
一、为什么要静态编译
用QtCreator编译程序时,使用的是动态编译。编译好的程序在运行时需要另外加上相应的Qt库文件,一大堆dll文件。如果想将生成的程序连同所需要的库一起完整地打包成一个可执行程序,那就需要使用静态编译。Qt官方不提供静态编译好的安装包,所以需要我们在自己的电脑上静态编译。而且exe文件会比动态编译的要小上很多。
二、源码下载

打开网址选择一般选择最新的版本,根据QT官方Qt5.12这一版有长期的技术支持,大约5年的样子稳定性相对来说比较高,所以建议选择这个版本的源码来编译。 我编译的时候才是Qt5.12.2,MD我前天刚编译好今天就跟新到Qt5.12.3。伤不起啊。
三、安装编译工具
安装的编译工具有:
一般来说下载这三个工具就可以,记得要设置环境变量,当然你要编译MSVC版的安装Visual Studio2017,并且安装它。
四、编译环境选择
  这次我选择编译x86的静态库,原因很简单。64位的系统可以运行32位的程序,但是反之则不可以,所以选择编译环境位x86

五、编译参数配置
打开源码所在位置( qtbase\mkspecs\common\msvc-desktop.conf )找到如图所示位置文件并修改保存:

六、开始编译
- 先打开命令工具提示切换到源码所在位置
 

- 切换完成之后输入如下命令(建议复制粘贴):
 
configure.bat -static -prefix "D:\Qt\msvc2017_static" -confirm-license -opensource  -debug-and-release -platform win32-msvc  -nomake examples -nomake tests  -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -mp
 configure.bat
 -static //指明是静态编译
 -prefix "D:\Qt\msvc2017_static" //指明安装的目录
 -confirm-license -opensource  //指明是开源版本的qt
 -debug-and-release //指明需要debug版和release版,可以单独选择release版
 -platform win32-msvc  //指明使用msvc编译
 -nomake examples -nomake tests  //不编译样例
 -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg //可选插件
 -opengl desktop
 -mp //多核编译
make
在命令提示工具输入:
nmake
此时源码开始编译,编译时长根据电脑的配置而异,我的电脑I7 7500U Inter240GSSD,大约从早上上班9点种开始编译,在下午6点钟下班的时候没有编译完,等第二天早上上班之后发现已经编译完了,具体多长时间也不知道。乐观12+小时以上。nmake install
安装完成之后在命令提示工具输入:
nmake install
此时编译号的源码开始安装,这个安装时长大概2个小时左右吧。安装完成之后就可以使用了。
七、开始使用
源码编译安装完成之后,需要安装Qt Creator工具来使用我们刚刚编译好的静态QT。首先下载 [QtCreator](http://download.qt.io/official_releases/qtcreator/)
依然选择最新版下载并安装。安装完成之后打开开发工具我们需要配置一下才能使用。


** 注意事项:在里一定要天写“win32-msvs”。否则编译器会报编译目标类型错误 **
配置完以上内容就可以开始放心的编译自己的程序。测试了一下空白程序在release模式下大概11M左右,还是蛮大的吧,优势就是不必担心丢失DLL文件而报错了。
八、注意事项
在添加Qt Versions时可能会报“qmlscene 未安装”,出现黄色感叹号。这是你只需将安装Qt官方动态编译的安装包拷贝相应目录里面的“qmlscene.exe”到我们刚刚编译安装的目录下重新添加就ok了。
当你下载别人编译好的静态库或者把自己编译的库移动了一个位置时Qt Versions 位提示错误“qt未正确安装,请使用make install进行安装”。不要怕其实不用重新编译安装的,只需在目录下新建一个文本文档“qt.txt”,然后输入
[Paths]
Prefix=D:/qt/static
** 注意:输入完之后保存时选择“ANSI”,另存为的时候有选择提示选择“ANSI”类型即可。最后将qt.txt改为qt.conf。 **
九、结尾
做好上述8个步骤之后我们的静态环境就彻底搭建好了,然后就欢乐的码代码吧。
附上自己编译的静态库和编译工具 :链接:https://pan.baidu.com/s/1E3Y40FCmzQQMz_doZ0OYcQ  提取码:fme4												
											Qt最新版5.12.2在Win10环境静态编译安装和部署的完整过程(VS2017)的更多相关文章
- Win10 VS2015 静态编译Qt5.6.2源码
		
由于VS2015需要CRT等拓展组件,因此把内部编写的工具软件以静态发布,固需要编译Qt源码.Qt5.6.2版本,VS2015,Win10 1.安装python,perl,下载jom 2.改文件com ...
 - Anaconda 安装教程(Win10环境) Tensorflow安装
		
序 Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,特别是当你使用Windows的时候.为了解决这些问题,有不少发行版的Python,比如WinPython.An ...
 - RabbitMQ 在 Win10 环境下的安装与配置
		
1 RabbitMQ 环境配置 1.1 ErLang 下载安装 RabbitMQ 需要 ErLang 环境支持:首先下载 ErLang 并安装. 建议使用新版本,版本过低存在与 Rab ...
 - suse 12 sp3 利用shell脚本离线编译安装ansible
		
# 测试环境是suse 12 sp3的系统,机器都是内网使用的,安装ansible真的很难顶 # 测试环境使用的python版本:2.7.13-27 # 此脚本只在本人测试环境成功,其他环境,需要选择 ...
 - win10环境下tensorflow-gpu安装
		
踩了很多坑,浪费了一下午时间,在此记录一下. pip install tensorflow-gpu 然后下载安装cuda8.0 https://developer.nvidia.com/cuda-do ...
 - 【初学必备】Win10环境下Anaconda安装
		
Anaconda集合了python,Spyder,Jupyter notebook及conda-----包管理器与环境管理器(含常用的panda,numpy等),省去单独下载的繁琐步骤,方便使用. 注 ...
 - win10 环境下  MinGW-w64安装
		
MinGW-w64 就是 著名C/C++编译器GCC的Windows版本. 一.什么是 MinGW-w64 ?MinGW 的全称是:Minimalist GNU on Windows .它实际上是将经 ...
 - Win10 Ubuntu18.04 编译安装 nignx
		
nginx 下载页 http://nginx.org/en/download.html wget http://nginx.org/download/nginx-1.14.0.tar.gz //安装依 ...
 - Linux/Ubuntu下 静态编译Qt程序
		
一般情况下,我们用Qt编译出来的程序是要依赖于系统Qt库的,也就是这个程序移到别的没有安装Qt库的系统上是不能使用的.会提示缺少……库文件之类的错误.这就是动态编译的结果. 但是如果我们想编译一个程序 ...
 
随机推荐
- C#4.0新增功能01 动态绑定 (dynamic 类型)
			
连载目录 [已更新最新开发文章,点击查看详细] C# 4 引入了一个新类型 dynamic. 该类型是一种静态类型,但类型为 dynamic 的对象会跳过静态类型检查. 大多数情况下,该对象就像 ...
 - [leetcode] 621. Task Scheduler(medium)
			
原题 思路: 按频率最大的字母来分块,频率最大的字母个数-1为分成的块数,每一块个数为n+1 比如AAABBCE,n=2, 则分为A-A- +A AAABBBCCEE,n=2,则分为AB-AB- +A ...
 - 浏览器和Node 中的Event Loop
			
前言 js与生俱来的就是单线程无阻塞的脚本语言. 作为单线程语言,js代码执行时都只有一个主线程执行任务. 无阻塞的实现依赖于我们要谈的事件循环.eventloop的规范是真的苦涩难懂,仅仅要理解的话 ...
 - C#写好的类库dll在别人调用的时候也能看到注释的方法
			
1.用///的方法添加注释 2.项目的属性里面,要选上"生成XML注释文档" 菜单 Project -> 'xxxx' Properties -> Build -> ...
 - SpringBoot入门(一):从HelloWorld开始
			
从0开始创建springBoot项目,话不多说,跟着我一步一步来就行了. 1.新建项目 1) 创建新项目,选择project, 点点点就好了 2) Spring Initializr——>选择 ...
 - wp伪静态网页打开慢之提速方案1s内打开 wp的静态化插件测试
			
自上篇文章,我做了伪静态话.可是伪静态访问还是php动态页面,还需要服务端分析如何处理,访问页面时会发现有一个漫长的等待响应的时间.这是打开速度在4s左右.而静态页面则是直接打开,不需要服务器操作,不 ...
 - memset函数怎么用嘞↓↓↓
			
1.我也曾天真的以为 memset(a,0,sizeof(a))中的0可以用任意数替换 实际上这是错误的 memset的功能是将一快内存中的内容以单个字节逐个拷贝的方式放到指定的内存中去. 2.介绍几 ...
 - jQuery框架操作CSS
			
3.1 jQuery框架的CSS方法 jQuery框架提供了css方法,我们通过调用该方法传递对应的参数,可以方便的来批量设置标签的CSS样式. 使用JavaScript设置标签的样式相对来说比较麻烦 ...
 - bean的创建(五)第二部分 寻找bean的工厂方法实例化
			
instanceWrapper = createBeanInstance(beanName, mbd, args); AbstractAutowireCapableBeanFactory.create ...
 - rabbitMQ_rpc(六)
			
远程过程调用(RPC) 在前面我们已经学习了如何使用工作队列在多个消费者之间分配耗时的任务. 但是如果我们需要在远程计算机上运行功能并等待结果怎么办?那将会是一个不同的故事.此模式通常称为远程过程调用 ...