zoukankan      html  css  js  c++  java
  • 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:Perlin(我的)添加到path环境变量。如果安装时勾选了添加到环境变量的选项,就不用手动添加了。

    参考链接:http://doc.qt.io/qt-5/windows-requirements.html

    二.编译准备

    1.我之前安装了qt-opensource-windows-x86-msvc2015-5.7.0.exe,并且安装时勾选了包含源码。将源码D:QtQt5.7.0VS20155.7Src拷贝到D盘根目录。

    2.在D盘新建D:QtStaticQt5.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如下所示:

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. REM ********** Initialize env for msvc 2015 cl compiler **********  
    2. SET PATH=C:Windows;C:Windowssystem32  
    3. REM Set up Microsoft Visual Studio 2015, where <arch> is amd64, x86, etc.  
    4. CALL "D:Program Files (x86)Microsoft Visual Studio 14.0VCvcvarsall.bat" x86  
    5.   
    6. REM ********** Update include & lib to support xp win sdk 7.1A **********  
    7. SET PATH=C:Program Files (x86)Microsoft SDKsWindowsv7.1ABin;%PATH%  
    8. SET INCLUDE=C:Program Files (x86)Microsoft SDKsWindowsv7.1AInclude;%INCLUDE%  
    9. SET LIB=C:Program Files (x86)Microsoft SDKsWindowsv7.1ALib;%LIB%  
    10. SET CL=/D_USING_V140_SDK71_;%CL%  
    11.   
    12. REM ********** 3rd party build tools binaries: ruby, perl, python **********   
    13. SET PATH=C:Perlin;C:Python27;%PATH%  
    14.   
    15. REM ********** Set up qt source env **********  
    16. SET _ROOT=D:Src  
    17. SET PATH=%_ROOT%qtbasein;%_ROOT%gnuwin32in;%PATH%  
    18. REM Uncomment the below line when using a git checkout of the source repository  
    19. REM SET PATH=%_ROOT%qtrepotoolsin;%PATH%  
    20. SET QMAKESPEC=win32-msvc2015  
    21. SET _ROOT=  
    22.   
    23. REM Generate makefile  
    24. ../src/configure.bat -confirm-license -opensource -platform win32-msvc2015 -debug-and-release -static -target xp -prefix D:QtStaticQt5.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:Srcqtbasemkspecswin32-msvc2015中的qmake.conf配置文件,如下所示。

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #  
    2. # qmake configuration for win32-msvc2015  
    3. #  
    4. # Written for Microsoft Visual C++ 2015  
    5. #  
    6.   
    7. MSC_VER                 = 1900  
    8. MSVC_VER                = 14.0  
    9. include(../common/msvc-desktop.conf)  
    10. load(qt_config)  

    跳转到了上一级目录里common文件夹中的msvc-desktop.conf配置文件。

    打开D:Srcqtbasemkspecscommon中的msvc-desktop.conf配置文件,如下所示。


    将高亮的三行改为。

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. QMAKE_CFLAGS_RELEASE    = -O2 -MT  
    2. QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi  
    3. 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

  • 相关阅读:
    Things You Should Know
    因为web.config配置,导致(当前不会命中断点,还没有为该文档加载任何符号)
    【HTML5 Canvas游戏开发】笔记(二) 显示一张图片
    【HTML5 Canvas游戏开发】笔记(一) 概述和基础讲解
    const char* pcr&char* const pcr
    【Python扩展阅读【转】EasyGui 学习文档【超详细中文版】】
    【Python扩展阅读【转】】字符串的方法及注释
    【Python⑥】python的缩进,条件判断和循环
    【Python⑤】python序列---list和tuple
    【Python④】python恼人的字符串,格式化输出
  • 原文地址:https://www.cnblogs.com/findumars/p/6254580.html
Copyright © 2011-2022 走看看