Qt5.12.4 msvc2015 windows7 静态编译

前言

Qt源码编译有很多选项:目标platforms,编译静态库或者动态库,skip(跳过)某个功能模块等选项。本文主要介绍在Windows 7 x64平台下使用visual studio 2015 编译Qt 5.12.4源码的流程。

需求

1.源码

在上面的地址下载安装包。如:
Qt5.12.4 msvc2015 windows7 静态编译_第1张图片

方式一:官网下载:[地址]:http://download.qt.io/archive/qt/5.12/5.12.4/single/qt-everywhere-src-5.12.4.zip

注:版本自己选择,我这里安装下载的是5.12.4版本,链接下面你可以下载其他所有版本。
qt安装包也是在这里下载。

方式二:软件安装时选择安装:

下载 qt-opensource-windows-x86-5.12.4.exe 后安装 下一步下一步,到
Qt5.12.4 msvc2015 windows7 静态编译_第2张图片
源码最终出现在安装目录下的src文件夹下。(个人喜欢这个方式下载的源码,因为你下载其他构件好的组件时就顺便下载源码,既可以有现成的版本可以用,也可以自己编译)

2.环境

(一).下载安装visual studio 2015

注:vs 2015 下载地址我就不贴了,百度一大堆。请自行下载。

(二).安装ActivePerl:https://www.activestate.com/products/activeperl/downloads/ 安装并设置PATH
(三).安装 python 这个就随意了

网上大部分用的都是py2,我因为本来机器上有py3.5.4,我直接使用了,也成功了。(安装方式我也不贴了,都需要自己编译qt了,安装个程序应该会自己找了,实在没接触过py的,百度一下,有很多教程的。)

3.Configure参数说明

注:建议命令行 Configure -h 看看各项参数,这里我们就只介绍几个常用的。

-prefix 生成目标库的目录 (简称 安装目录)

-release 生成release版本  -debug 生成debug版本  -debug-and-release生成debug和release版本 (我们需要作为平时工作用,所有一般都是需要debug和release 同时编译的)

-opensource 编译开源版  -commercial 编译商业版 (参数可选)
注:我只编译安装过开源版,商业版没试过。

-static 生成静态库lib文件  -shared 生成动态库dll文件  
注:静态库与动态库区别是在生成目标文件的链接方式上,静态库采用静态链接,在生成的目标文件(如.exe文件)中会包含库文件代码,而动态库在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入。(默认:shared 我们需要的就是静态编译所以 得加入这个选项)

-force-debug-info 强制生成调试信息 (参数可选)
注: 这个参数是让Qt release版本也生成.pdb文件。这个文件有什么作用呢?它就是我们在release版本下设置了异常捕获信息函数,打印出错堆栈信息所必须的文件。如果程序没用开启异常捕获选项,是不需要开启这个参数的。    

-no-opengl ...........禁用OpenGL支持
注:我们一般是需要opengl的 所以这个选项基本没用过。

-opengl dynamic 指定opengl库 
    注:es2(Windows默认)
        desktop(Unix上默认)
        dynamic (仅限Windows)

-platform win32-msvc 构建的操作系统和编译器
注:win32-msvc 这个是vs
    win32-g++ 这是 MingW32

-skip 跳过该模块
注:这个也很有用,一些你不关注的模块可以直接跳过

-nomake 不编译该模块
-mp 启动多核编译
注:这个基本都要开的。

下面是我的版本,可以借鉴下。

MSVC版
.\Configure.bat -confirm-license -opensource -platform win32-msvc -debug-and-release -static -static-runtime -force-debug-info -opengl dynamic -prefix "./build" -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -nomake tests -no-compile-examples -nomake examples 
MingW版
.\Configure.bat -confirm-license -opensource -platform win32-g++ -debug-and-release -static -static-runtime -force-debug-info -opengl dynamic -prefix "./build" -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -nomake tests -no-compile-examples -nomake examples

错误:

  1. 错误: ./…/src/corelib/global/qglobal.h(45): fatal error C1083: 无法打开包括文件: “type_traits”: No such file or directo
    原因:cmd 窗口进入的是一般的 找不到vs 的编译环境,(我尝试过把vs加入环境变量也不行)
    解决方案
    (一), 在开始菜单里进入Visual Studio 2015文件夹,打开“VS2015 x64本机工具人员命令提示符”,进入cmd窗口模式

    (二), 在cmd环境下 输入

    X86版本
     call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86	
     REM cryptography by default links to OpenSSL 1.1.0 which has different library	
     REM file names, so we need this flag to be able to link to OpenSSL 1.0.2	
     set CRYPTOGRAPHY_WINDOWS_LINK_LEGACY_OPENSSL=1
    
    Win64 版本
     call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64	
     set CFLAGS=-m64	
     set CXXFLAGS=-m64	
     set LDFLAGS=-m64	
     REM cryptography by default links to OpenSSL 1.1.0 which has different library	
     REM file names, so we need this flag to be able to link to OpenSSL 1.0.2	
     set CRYPTOGRAPHY_WINDOWS_LINK_LEGACY_OPENSSL=1    
    

    注:目的都是为了让他找到vs的编译环境

你可能感兴趣的:(msvc,QT)