VS2015编译Qt5.7.0生成支持XP的静态库(很不错)
一.编译工具
1.VS2015
编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2)。因为Update补丁向下兼容,我用的是Visual Studio 2015 (Update3)。
2.Python
我用的是python-2.7.9,去官网下个最新版的也行。
安装后将C:\Python27(我的)添加到path环境变量
3.Perl
我用的ActivePerl-5.16.2.1602,去官网下载个最新的也行。
安装后将C:\Perl\bin(我的)添加到path环境变量。如果安装时勾选了添加到环境变量的选项,就不用手动添加了。
参考链接:http://doc.qt.io/qt-5/windows-requirements.html
二.编译准备
1.我之前安装了qt-opensource-windows-x86-msvc2015-5.7.0.exe,并且安装时勾选了包含源码。将源码D:\Qt\Qt5.7.0VS2015\5.7\Src拷贝到D盘根目录。
2.在D盘新建D:\QtStatic\Qt5.7.0VS2015目录,该目录是Qt编译后的安装目录。
3.在D盘新建D:\QtBuildScript目录,里面放置编译脚本qt-build.bat。为什么要新建一个目录来放置编译脚本,而不将编译脚本直接放置到源码源码目录D:\Src中?这里用到了影子编译(shadow build)的技巧,详见Qt5.7.0配置选项(configure options)。这样生成的Makefile文件和编译生成的中间文件都会在D:\QtBuildScript目录中。
编译脚本qt-build.bat如下所示:
- REM ********** Initialize env for msvc 2015 cl compiler **********
- SET PATH=C:\Windows;C:\Windows\system32
- REM Set up \Microsoft Visual Studio 2015, where <arch> is amd64, x86, etc.
- CALL "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
- REM ********** Update include & lib to support xp win sdk 7.1A **********
- SET PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
- SET INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%
- SET LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;%LIB%
- SET CL=/D_USING_V140_SDK71_;%CL%
- REM ********** 3rd party build tools binaries: ruby, perl, python **********
- SET PATH=C:\Perl\bin;C:\Python27;%PATH%
- REM ********** Set up qt source env **********
- SET _ROOT=D:\Src
- SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
- REM Uncomment the below line when using a git checkout of the source repository
- REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
- SET QMAKESPEC=win32-msvc2015
- SET _ROOT=
- REM Generate makefile
- ../src/configure.bat -confirm-license -opensource -platform win32-msvc2015 -debug-and-release -static -target xp -prefix D:\QtStatic\Qt5.7.0VS2015 -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtquickcontrols -skip qtquickcontrols2 -skip qtsensors -skip qtdoc -mp
脚本主要分为五部分,第一和第二部分是编译器的选择和对XP的支持,详见下面两个链接。
http://doc.qt.io/qt-5/windows-building.html
使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序
第三部分可以不需要,因为之前已经将python和perl添加到path环境变量了。当然,保留第三部分也没什么问题。
第四部分设置Qt源码的环境变量。
第五部分是配置选项,详见Qt5.7.0配置选项(configure options),尤其注意-target xp。../src/configure.bat表示执行上一级目录里src文件夹中的configure.bat脚本,即D:\Src目录中的configure.bat脚本。那为什么不直接将configure.bat拷贝到D:\QtBuildScript目录中呢?因为configure.bat必须在源码目录中执行。
4.指定静态编译
在上面的编译选项中指定了静态编译(-static),但是这里的静态编译是指:使用编译完成并安装的Qt编写的应用程序(.exe),部署到XP或其他系统时,可以不必打包Qt库,但是依然需要VS2015运行时库。
如果想解除对VS2015运行时库的依赖,也就是说生成的应用程序(.exe)部署到XP或其他系统时,可以双击直接运行。还需要进行如下操作。
Qt支持的平台和编译器都在qtbase/mkspecs目录中,打开D:\Src\qtbase\mkspecs\win32-msvc2015中的qmake.conf配置文件,如下所示。
- #
- # qmake configuration for win32-msvc2015
- #
- # Written for Microsoft Visual C++ 2015
- #
- MSC_VER = 1900
- MSVC_VER = 14.0
- include(../common/msvc-desktop.conf)
- load(qt_config)
跳转到了上一级目录里common文件夹中的msvc-desktop.conf配置文件。
打开D:\Src\qtbase\mkspecs\common中的msvc-desktop.conf配置文件,如下所示。
将高亮的三行改为。
- QMAKE_CFLAGS_RELEASE = -O2 -MT
- QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
- QMAKE_CFLAGS_DEBUG = -Zi -MTd
即MD(动态)改为MT(静态)。
五.编译
打开VS2015开发人员命令提示符。
执行脚本,开始配置。
几分钟后,提示输入nmake。输入nmake,然后回车,开始编译。
六.安装
大概三个小时左右(和机器配置有关),编译完成。输入nmake install,然后回车,开始安装。
七.使用
将刚才安装的Qt静态库添加到Qt Creator。
新建一个基于窗口的应用程序test,选择Qt静态库。
将生成的test.exe(不管是debug还是release)拷贝到XP裸机中,双击直接可以运行,如下图所示。
http://blog.csdn.net/caoshangpa/article/details/53738393
VS2015编译Qt5.7.0生成支持XP的静态库(很不错)的更多相关文章
- Win10 + VS2015 下编译 Qt5.6.0
近期由于另外一个项目需要用 vs2015 ,于是把 Qt 也升级到了 5.6.0 .由于项目需要兼容 Windows xp ,所以需要自己编译 Qt .这里大致整理一下编译的过程. 安装 Active ...
- 静态编译 Qt5.7.0 (含 openssl 支持)
关于Qt静态便宜的环境等,请先参见 Win10 + VS2015 下编译 Qt5.6.0 . 首先编译 openssl .我这里用的版本是 openssl 1.0.2j (新的1.1版本的便宜稍有不同 ...
- linux下编译qt5.6.0静态库——configure配置
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- linux下编译qt5.6.0静态库(使用./configure --help来看看都有哪些参数。超详细,有每一个模块的说明。如果改变了安装的目录,需要到安装目录下的bin目录下创建文件qt.conf)(乌合之众)good
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- VS2010编译Qt5.4.0静态库
http://www.kavenblog.com/?p=375 1.Qt的跨平台十分优秀,但是在Windows上是还是会有许多问题,其中之一就是动态链接库的问题,Qt程序的发布必须带一个体积不小的DL ...
- vs2010静态编译qt5.1.0
本博文参考 http://blog.chinaunix.net/uid-20690340-id-3802197.html 静态库在链接的时候直接写入二进制文件里,这样的好处在于发布的时候无需附带dll ...
- VS2013编译Qt5.6.0静态库
获取qt5.6.0源码包 直接去www.qt.io下载就好了,这里就不详细说了. 这里是我已经编译好的** 链接:http://pan.baidu.com/s/1pLb6wVT 密码: ak7y ** ...
- VS2013编译Qt5.6.0静态库(乌合之众)
获取qt5.6.0源码包 直接去www.qt.io下载就好了,这里就不详细说了. 这里是我已经编译好的** 链接:http://pan.baidu.com/s/1pLb6wVT 密码: ak7y ** ...
随机推荐
- Python~recursive function递归函数
尾递归实现循环 def fact(n): if n==1: return 1 else : return n * fact(n-1) raw_input() 字符而非数字 unsupported op ...
- Effective C++ -----条款54:让自己熟悉包括TR1在内的标准程序库
C++ 标准程序库的主要机能由STL.iostream.locales 组成.并包含C99 标准程序库. TR1 添加了只能指针(例如 tr1::shared_ptr).一般化函数指针(tr1::fu ...
- linux 文件权限、类型、命名规则
文件权限 -rwxr-x--t 文件类型 用户权限 组权限 其他用户权限 umask是一个掩码,设置文件的默认权限,会屏蔽掉不想授予该安全级别的权限,从对象的全权权限中减掉:对文件全权权 ...
- .Net自带缓存Cache的使用
对于数据比较大,经常要从数据库拿出来用的,可以考虑使用.Net自带的缓存Cache,简单好用: //向内存中插入一个缓存 System.Web.HttpRuntime.Cache.Insert(&qu ...
- MySql中的字符数据类型
MySql中的varchar类型 1.varchar类型的变化 MySQL数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255根据不同版本数据库 ...
- CQRS FAQ (翻译)
我从接触ddd到学习cqrs有6年多了, 其中也遇到了不少疑问, 也向很多的前辈牛人请教得到了很多宝贵的意见和建议. 偶尔的机会看到国外有个站点专门罗列了ddd, cqrs和事件溯源的常见问题. 其中 ...
- OGG-01820 Could not enable workspace
状况: OGG replicat进程abend了,查看report显示如下问题: 2016-11-01 16:11:47 ERROR OGG-01820 Could not enable wo ...
- maven-replacer-plugin
今天多认识了下这个maven插件. 基本用法: <plugin> <groupId>com.google.code.maven-replacer-plugin</grou ...
- 奇异值分解(SVD)和简单图像压缩
SVD(Singular Value Decomposition,奇异值分解) 算法优缺点: 优点:简化数据,去除噪声,提高算法结果 缺点:数据的转换可能难于理解 适用数据类型:数值型数据 算法思想: ...
- 修改vim的主题风格
参考网站:https://github.com/yangyangwithgnu/use_vim_as_ide#0.1 molokai源码:https://github.com/tomasr/molok ...