VS2017/2015 静态编译Qt 5.8

1.工具安装:

(1)安装vs 2015或者2017

(2)安装python

(3)安装perl 点击下载  【注意勾选添加环境变量】

2.下载qt 源码 点击下载

3.源码配置并编译:

(1)修改src\qtbase\mkspecs\common\msvc-desktop.conf 将MD改为MT

找到以下标志
QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MDd
修改成下面
QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MTd

(2)打开vs2015或者2017的开发人员命令提示符,并且切换到源码目录。

            VS2017/2015 静态编译Qt 5.8_第1张图片

    输入命令:

configure -confirm-license -opensource -platform win32-msvc2017 -debug-and-release -static -static-runtime -force-debug-info -prefix "E:\staticQt" -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -nomake tests -no-compile-examples -nomake examples

【注意】命令中的选项 -prefix "E:\staticQt"  代表编译好的qt安装目录,可自行更改。此外 -platform win32-msvc2015 更改为相应的vs版本号。其他照抄就好。

(3)继续输入命令进行编译: 

nmake

此时就在编译了。要等几个小时,取决于机器性能。

(4)继续输入命令进行安装:

nmake install

将编译好的qt安装到第(2)步配置的那个目录。安装后在IDE(vs qt tool【vs 的插件】中或者qt creator)中配置就可以使用了。

至此就可以qt 静态版本说大功告成了。

 

【其他可能出现的问题】

(1)可能编译出错:

src\plugins\generic\tuiotouch\qtuiohandler.cpp 491 包含非ASCII字符。

        解决方法:直接将那两行debug注释掉就好

   

        (2)使用编译好的中qt新建项目,编译时候出错:

错误信息:

1>C:\Qt\Qt5.8.0\5.8\msvc2015_64\include\QtCore/qalgorithms.h(593): error C3615: constexpr 函数 "QAlgorithmsPrivate::qt_builtin_ctz" 不会生成常数表达式

1>C:\Qt\Qt5.8.0\5.8\msvc2015_64\include\QtCore/qalgorithms.h(595): note: 未初始化的变量声明导致出现故障

1>C:\Qt\Qt5.8.0\5.8\msvc2015_64\include\QtCore/qalgorithms.h(595): note: 请参见“result”的用法

1>C:\Qt\Qt5.8.0\5.8\msvc2015_64\include\QtCore/qalgorithms.h(596): note: 非法语句或表达导致出现故障

1>C:\Qt\Qt5.8.0\5.8\msvc2015_64\include\QtCore/qalgorithms.h(600): error C3615: constexpr 函数 "QAlgorithmsPrivate::qt_builtin_clz" 不会生成常数表达式

1>C:\Qt\Qt5.8.0\5.8\msvc2015_64\include\QtCore/qalgorithms.h(602): note: 未初始化的变量声明导致出现故障

1>C:\Qt\Qt5.8.0\5.8\msvc2015_64\include\QtCore/qalgorithms.h(602): note: 请参见“result”的用法
解决方法: 将Qt官方给出的qalgorithms.h替换原文件即可。 点击下载

 

/******************************华丽的分割线**********************************************/

以下和windows下编译无关,顺便记录下Linux qt下静态编译的configure选项:

./configure -v -confirm-license -opensource -static -static-runtime -force-debug-info -prefix ~/staticQt -no-opengl -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -nomake tests -nomake examples

 

你可能感兴趣的:(工具使用)