zoukankan      html  css  js  c++  java
  • Qt 5.9.4 如何静态编译和部署?

    Qt 5.9.4 如何静态编译和部署?

    • MSVC2015 x86 静态编译
    • Qt 部署静态库
    • VS2015 部署静态库

    1. MSVC2015 x86 静态编译

    1.1 Qt 官网下载最新源代码

    立即下载

    1.2 参考 Qt 官网提供的教程

    参考上面文档后,发现需要安装以下依赖:

    1. ActivePerl
    2. Python

    成功安装后即可开始编译。

    1.3 配置和编译

    修改配置

    srcqtbasemkspecscommonmsvc-desktop.conf
    源:
    QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MD
    QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -MD -Zi
    QMAKE_CFLAGS_DEBUG = -Zi -MDd
    
    修改后:
    QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_OPTIMIZE -MT
    QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -MT -Zi
    QMAKE_CFLAGS_DEBUG = -Zi -MTd
    

    使用 msvc x86 命令行工具,cd 到 qt 源代码目录。

    configure -confirm-license -debug-and-release -static -static-runtime -mp -accessibility -platform win32-msvc -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -opengl dynamic  -nomake examples -nomake tests -no-compile-examples -prefix "D:QtQt5.9.45.9.4msvc2015_static_x86"
    nmake
    nmake install
    
    //如需要静态链接 -openssl 库,则在上面的命令中追加以下语句:
    -openssl-linked OPENSSL_INCDIR=D:QtOpenSSL-Win32include OPENSSL_LIBDIR=D:QtOpenSSL-Win32libVCstatic OPENSSL_LIBS="-llibeay32MT -lssleay32MT -lGdi32"
    
    //OPENSSL_INCDIR:头文件目录
    //OPENSSL_LIBDIR:库文件目录
    //OPENSSL_LIBS:静态库
    
    -confirm-license        自动选择开源协议
    -debug-and-release      debug和release编译
    -static                 静态编译
    -static-runtime     
    -mp                     多线程编译
    -accessibility       可访问性支持,官方建议开启
    -platform win32-msvc    选择目标平台
    -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype    使用qt自带的图像和压缩处理库,不使用系统的,默认是系统找不到则自动使用qt自带的库
    -opengl dynamic         动态选择加载库方式 opengl
    -nomake examples -nomake tests -no-compile-examples 不编译例子
    -prefix "D:QtQt5.9.45.9.4msvc2015_static_x86"   指定生成目录
    
    更多请自行查看 configure -help
    

    2. Qt 部署静态库

    1. 把静态编译的库移动到 Qt msvc2015 同级目录下,然后复制已有的 qt msvc2015inqt.conf 文件 和 qmlscene.exe。放入静态库 bin 里面。
    2. 打开Qt ,选择 工具->选项->构建和运行->构建套件(kit),克隆一个配置,然后再 Qt Versions 添加静态编译的库 binqmake.exe
    3. 修改 克隆配置 里面的 qt 版本,设置为 步骤 2 添加的即可。
    
    ...
    现在就可以正式编译 exe 程序了。
    

    3. VS205 部署静态库

    1. 安装 Qt 插件
    2. Qt VS tool -> Qt Options 添加一个 Qt Versions,选择 静态库根目录即可
    3. 新建一个 Qt 工程,Qt Project Settings 设置为 步骤1 配置的版本。
    4. C/C++->常规->附加包含目录$(QTDIR)pluginsplatforms
    5. 链接器->常规->附加库目录 添加 $(QTDIR)pluginsplatforms
    6. 链接器->常规->附加依赖项 添加以下 *.lib 文件
    qtmain.lib
    Qt5Core.lib
    Qt5Gui.lib
    Qt5Widgets.lib
    
    qwindows.lib
    qtlibpng.lib
    qtpcre2.lib
    qtfreetype.lib
    qtharfbuzz.lib
    
    Qt5FontDatabaseSupport.lib
    Qt5ThemeSupport.lib
    Qt5AccessibilitySupport.lib
    Qt5EventDispatcherSupport.lib
    
    imm32.lib
    winmm.lib
    ws2_32.lib
    dwmapi.lib
    uxtheme.lib
    version.lib
    
    glu32.lib
    opengl32.lib
    
    
    main.cpp 最前面添加以下内容:
    #include <QtPlugin>
    Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
    ...以上操作后即可编译 exe 程序。
    
    
    
    最后补充一句,如何查找 模块的静态依赖?
    在静态编译的lib文件夹里面查看 模块的 prl 文件,里面详细列举的模块的静态依赖!需要使用该模块了,就需要该静态依赖!
    
    rem 影子构建
    cd D:QtQt5.9.45.9.4msvc2015_static_x86
    D:Qtqt-everywhere-opensource-src-5.9.4configure -confirm-license -debug-and-release -static -static-runtime -mp -accessibility -platform win32-msvc2015 -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -opengl dynamic -openssl-linked OPENSSL_INCDIR=D:QtOpenSSL-Win32static_sslinclude OPENSSL_LIBDIR=D:QtOpenSSL-Win32static_ssllib OPENSSL_LIBS="-llibeay32 -lssleay32 -lGdi32" -nomake examples -nomake tests -no-compile-examples -prefix "D:QtQt5.9.45.9.4msvc2015_static_x86"
    nmake
    nmake install
    
    @echo off
    rem 设置环境变量
    set MSVC_PATH="D:ProgramsMicrosoft Visual Studio 12.0"
    
    nmake clean
    
  • 相关阅读:
    Flask特殊装饰器
    flask中的Response、Request、Session、装饰器、实例化参数、蓝图、
    QC的安装和配置
    测试用例设计方法-因果图(鱼骨图)
    测试用例设计方法-流程分析法(场景法)
    测试用例设计方法-状态迁移
    测试用例设计方法-正交实验
    测试用例设计方法-判定表
    测试用例设计方法-边界值
    测试用例设计方法-等价类划分
  • 原文地址:https://www.cnblogs.com/cheungxiongwei/p/8251537.html
Copyright © 2011-2022 走看看