转一篇比较详细的vc编译qt的文

Qt源码在VC环境下编译(以VC14下Qt5.9.1和Qt5.4.0为例,包含icu和QtWebkit模块) ICU57 + Qt5.9.1 + QtWebKit在VC14下编译编译所需工具 工具 下载地址 Qt Source https://download.qt.io/archive/qt/5.9/ VS Compiler https://docs.microsoft.com/en-us/visualstudio/install/create-a-network-installat 阅读详情

 

  编译准备  

下载NOKIA网站上的QT SDK,解压或安装到相关目录。


下载后安装好的目录结构为(假设安装到D:\QT):
├─share
├─lib
├─bin
├─mingw
└─qt
    ├─translations(QT语言文件目录)
    ├─tools(QT相关工具源码目录)
    ├─src(源代码目录)
    ├─qmake(qmake源代码目录)
    ├─plugins(图形,数据库等插件目录)
    ├─mkspecs(平台配置文件)
    ├─lib(库文件)
    ├─include(头文件)
    ├─examples(示例程序)
    ├─doc(文档)
    ├─demos(演示程序)
    ├─config.tests
    ├─bin(命令行工具)
    └─qtc-debugging-helper

configure配置工具在qt目录,以下假设QTDIR=D:\QT\SDK\qt,编译前最好清空 lib,demos,examples,docs四个目录,配置完成后在这几个目录下放一个空的Makefile文件,避免make时报错。

  VS2005动态编译  

1.设置VS2005的环境变量
2.设置目标平台
    set QMAKESPEC=win32-msvc2005
3.进入 QTDIR目录运行配置,生成Makefile文件
    configure -platform win32-msvc2005 -release -opensource -shared -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support  -qt-zlib -qt-gif -qt-     libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp -qt-style-windowsvista
4. 运行nmake /I /K(附带/I /K 选项可以避免出现错误时编译自动终止,用于跳过错误继续编译其它文件)

经过这样编译的Qt库不依赖mingwm10.dll,libgcc_s_dw2-1.dll,但依赖Qt库的Dll文件和微软的CRT运行时库,使用此Qt库编译Windows平台下的程序,发布时需带上用到的Qt链接库Dll文件和微软的CRT运行时库Dll文件。

  VS2005静态编译  

(VS2008 编译同理,启动相应的命令行,设置相应的目标平台,修改相应的配置文件)
1.设置VS2005的环境变量
2.设置目标平台
    set QMAKESPEC=win32-msvc2005
3.修改mkspecs/win32-msvc2005目录下的配置文件 qmake.conf
    将下面两行:
    QMAKE_CFLAGS_RELEASE    = -O2 -MD
    QMAKE_CFLAGS_DEBUG      = -Zi -MDd
    修改为:
    QMAKE_CFLAGS_RELEASE    = -O2 -MT
    QMAKE_CFLAGS_DEBUG      = -Zi -MTd
 (D是指dynamic,T是指static,d是指debug)
4.进入QTDIR目录,运行配置,生成 Makefile文件
   set QMAKESPEC=win32-msvc2005
   configure -platform win32-msvc2005 -release -no-exceptions -opensource -static -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support  -qt-    zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp -qt-style-windowsvista
5.运行运行nmake /I /K

经过这样编译的Qt库不依赖于任何Dll文件(如微软的CRT运行时库),使用此Qt库编译Windows平台下的程序发布时不需要附带任何额外的 Dll文件。

  MinGW静态编译  

1.设置MinGW的环境变量
2.设置目标平台
    set QMAKESPEC=win32-g++
3.修改 mkspecs/win32-g++目录下的配置文件qmake.conf
   将下面一行:
   QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
   修改为:
   QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
   然后将下面一行:
   QMAKE_LFLAGS_DLL        = -shared
   修改为:
   QMAKE_LFLAGS_DLL        = -static
4.QTDIR目录,运行配置,生成Makefile文件
   set QMAKESPEC=win32-g++
   configure -platform win32-g++ -release -no-exceptions -opensource -static -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support  -qt-zlib -      qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp -qt-style-windowsvista
5.运行运行mingw32-make -i -k(-i -k选项的含义与上面nmake的相同)

经过这样编译的Qt库,不依赖任何Dll文件(如mingwm10.dll,libgcc_s_dw2-1.dll),使用此Qt库编译的 Windows平台下的程序发布时不需要附带任何额外的Dll文件。

  编译事项说明  

编译完成后可以删除bin目录中所有不是当前编译日期的文件。

建议编译前移除examples和demos文件夹的所有文件,避免重编译这两个文件夹,加快编译速度。

另外,编译命令请根据自己的实际情况配置,上面我的配置是(以VS2005静态编译为例):
-platform win32-msvc2005 目标平台
-release 关闭调试信息
-no-exceptions 除去异常支持
-opensource 开源版
-static 创建静态库
-fast 快速配置,只生成Qt库文件及子目录的Makefile文件,其它的Makefile文件后面再使用qmake生成
-qt-sql-sqlite SQLite驱动支持
-plugin-sql-sqlite  SQLite链接插件支持
-no-qt3support  不编译Qt3兼容库
-qt-zlib zlib库
-qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg 图形格式插件库
-no-webkit 不编译webkit,此选项可极大加快编译速度,需要使用WebKit的可以删除此选项
-qt-style-windowsxp -qt-style-windowsvista 支持XP和Vista主题样式

注意:使用静态编译的程序通常较大,建议发布前使用UPX压缩,一般可以减少至少50%的大小。
选择QT Creator还是VC + qt addin 兜兜转转又要做界面了,其实做jni开发也很无聊,调试起来太不爽了。 闲话少说,用qt做开发时该选择QT Creator还是VC + qt addin,网上众说纷纭,让人无所适从。自己摸索了一段时间之后,答案也逐渐清晰。插一句,开始选方案时因为不想学新东西了,还倾向于 mfc+duilib,用了个一个月的qt之后,庆幸没有抱残守缺,彻底抛弃mfc真是太明智了。 如果只是做界面,毫无疑问 阅读详情

相关推荐

qt creator的配置文件关于qt库路径怎么始终加入vc的库路径?

本机开发环境 qt-creator:2.0.1 qt:4.7.2 vs6 vs2005用qt-creator编译qt自带的例子时,遇到如下问题g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_PHONON_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"../../include/

chenqing0927的专栏 7363

Qt在VC环境下搭建以及编译

一、安装 1.在Trolltech.com上下载一个Windows环境下可使用的Qt原码包,如qt-win-opensource-src-4.3.4.zip,并解压缩(如解压缩至F:/Qt-4.3.4)2. 添加系统环境变量,在PATH中添加qt的bin路径(F:/Qt-4.3.4/bin),添加新的变量QTDIR(QTDIR=F:/Qt-4.3.4),再添加新变量QMAKESPEC=

zhoubl668的专栏:远帆,梦之帆! 8402

qt在vc环境下搭建和编译

qt在vc环境下搭建和编译

Visual Studio 2015 + cmake编译QT5程序

【代码】VS2015 + CMAKE编译QT5程序。

new9232的博客 2330

PYNQ开发板使用-使用DMA进行数据搬移(Simple DMA transfer 模式)

该篇是学习使用PYNQ开发板,实际上是对ZYNQ PL端AXI_CDMA 核的应用。实验步骤参照官网的教程,一步一步地做,但是由于在硬件资源布置方面与官方教程稍有出入,所以在SDK的源码里也进行了修改。 AXI_CDMA特性: 如果是使用ZYNQ 7系列芯片(可能其他Xilinx也是通用的),xilinx的AXI_CDMA 核有两种传输模式:轮询(poll)和中断(...

YGLeeeon的博客 3521

1.用Python写了一个进销存管理的软件~需求分析&界面设计&数据库设计&技术路线选择~

前端也打算用Python来写,查了很多的python库,大家比较推荐的是wxpython和QPython,之前接触过一点点的QT,确实非常强大,但是库比较重量级,自己写的这个东西明显配不上QT,又详细调研了一下wxpython,就是它了!

pepper_lihui的专栏 4321

2024年C C++最新C语言--内存函数(3),2024年最新这些面试官常问的开发面试题你都掌握好了吗

和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是。是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容。95%以上C C++开发知识点,真正体系化!出现重叠,就得使⽤memmove函数处理。

2401_84978588的博客 882

经典蓝牙中的Sniff、Hold与Park模式

若主设备在Sniff Attempt窗口外发送数据,从设备无法接收,需依赖重传机制。移动时立即传输数据。:Sniff Interval=20ms,Attempt=1时隙。:传感器每2秒唤醒一次同步信标,主设备按需唤醒特定传感器采集数据。Slave进入Sniff模式:每20ms唤醒1个时隙监听数据。:设备需要短暂执行高优先级任务(如扫描其他蓝牙设备)。:无数据传输超时后,设备可能自动进入Sniff模式。:主设备通过信标唤醒从设备,或从设备主动请求退出(:平衡功耗与响应速度,适合间歇性数据传输设备。

shishuangquan111的博客 1673

C++实践之Qt学习(扩展):Visual Studio中Qt开发环境的搭建

本篇文章主要是写给特别想用VS进行Qt开发的同学,内容包含超多超详细过程截图,谨慎查看。 另外由于之前安装和测试,中间穿插了VS2017和VS2019的部分截图,界面上会有一点差距,区别不大。 如果想直接使用QtCreator进行Qt开发,本篇文章可以直接跳过。 文章目录安装Visual Studio(若已安装,可跳过)下载安装安装Qt插件方式一:直接在VS扩展中搜索安装方式二:从Qt下载站下载插件安装包配置插件环境VS创建Qt项目创建项目Qt GUI Application向导进入向导选择模块设置父类.

大家随意 7万+

别让IO口保护二极管坑了你!实测讲解单片机电流倒灌的三种典型症状与防护

本文深入解析单片机电流倒灌的三大典型症状与防护方案,重点分析STM32等单片机在ADC采样异常、系统假死和通信速率异常中的表现。通过实测数据和电路设计建议,提供从基础二极管隔离到专业隔离器件的分级防护策略,帮助工程师有效预防和解决电流倒灌问题。

weixin_29280219的博客 347

【客户案例】母婴行业头部品牌是如何做私域的

各品牌争相跑马圈地,想方设法圈住流量,建立品牌资产;私域运营是一项“重人力”的工作,在传统的品牌运营过程中,私域操盘手经常会由于一对多导致无法兼顾,只能通过提高触达次数的方式加大漏斗,这样难以让每个社群都发挥出应有的价值,甚至还会导致一定程度的用户流失。除了宝妈身份外激发的用户认同感、亲密度外,KOC们作为产品的使用者,自由选择的推品和自由创作的推广文案都更具有真实性、代表性,能够极大程度激发群友们的信任感,从而愿意为产品买单,转化复购水到渠成。不同阶段的宝妈,母婴知识的储存量和经验是不同的,K品牌还会。.

圈量SCRM系统-企微营销工具-私域流量运营软件 948

Qt在VC中的两种编译方式

其实也不是什么两种编译方式,说来也是一种,只不过是:一个是不需要qmake,而需要moc,uic等的方法;另一个是需要qmake,而不要moc,uic等的方法。 先来看看qmake :假如要对hello.cpp进行编译,那么步骤是: qmake -project     生成平台相关的工程文件qmake  -tp vc hello.pro    通过hello.pro工程文

normallife的专栏 2311

Allegro172版本DFM功能介绍

Allegro172版本提供了实时DFM检查的功能,让违反要求的地方实时以DRC的形式报出来,让加工不可加工因素在设计的时候同步避免。打开Constraint,选择Manufacturing, 所有DFM相关DRC都在这。把所有下面DRC开关(DFM,DFA,DFT)都选择on,选择OK。这个规则和物理和间距规则等等都没有关系,单独的一个加工规则。这些DRC大部分是正常的,正常的可以去修改规则来消除。等待DRC刷新,板子上会出现很多DRC,类似下图。下面介绍如何调用和产生DFM规则。一直往下点击next。

weixin_54787054的博客 1340

Qt源代码使用Vs2013中VC编译器编译的流程

这应该算是我的第一篇博客,之前一直没有写博客的习惯。直到最近几天,看到一篇文章分析写博客对于程序员的技术提升的作用以及自己在这段时间的学习中总是不得其法的原因,故而下定决心,开始以博客的方式记录自己的点滴学习过程,同时也给自己一个反思的时间,用来将知识反复咀嚼,以达到正真意义上的掌握。   这一篇文章主要记述的是我这段时间在学习C++开源框剪Qt的过程中,碰到的一个最首要的问题——如何用VC编译

wql2rainbow的专栏 1711

【电弧】基于matlab simulink电弧仿真模型(Mayr Cassie电弧模型)【含Matlab源码 9226期】

simulink电弧仿真模型(Mayr Cassie电弧模型) 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 194

全网最全-QCC51xx-QCC30xx(TWS)系列从入门到精通开发教程汇总(持续更新中)

QCC3040开发笔记之基本介绍(0) QCC3040开发笔记之开发环境搭建(1) QCC3040开发笔记之debug调试(trb调试,usbt调试,adb调试,WIFI调试)(2) QCC3040开发笔记之按键配置(3) QCC3040开发笔记之按键切换(4) QCC3040开发笔记之按键逻辑(5) QCC3040开发笔记之tone(6) QCC3040开发笔记之提示音(7) QCC3040开发笔记之bitserial接口(8) QCC3040开发笔记之双mic+AEC+ANC(9...

心跳包的博客 3万+

VS2019加入VC-LTL编译Qt5.12.8去除VC运行时,支持WebEngine

由于QWebEngine只支持VS编译,在程序发布时各种VC运行时真的让人很崩溃,感谢初雨开源的VC_LTL让我们从VC运行时解脱出来。记录一下编译过程。 1.编译环境: Windows10x64+VS2019社区版+Python2.7+Perl5.28.1+Ruby2.6.3+LLVM6.0; Qt5.12.8+ICU4C66+OpenSSl1.1.1d+VC-LTL4.1.0.2 2.编译脚本: @echo off REM Set up \Microsoft Visual Studio 2015, w

super_farmers的博客 1453

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VC控制台运行QT生成的界面

Win VC+QT安装教程请查看我的另一篇文章《QT+VC2012安装及配置》。 以下是在VC2012控制台中使用QT5.5.1。 1 将QT的头文件和库拷出来 把需要的头文件和lib分别放进一个文件夹。 2 VC添加包目录和库目录 3 添加需要的库 要注意QT安装完后库有Release版本和Debug版本,d.dll时Debug版本,.dll是Release版本,相应的lib也要配对否则在...

发呆的程序猿 1245

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

vc6.0上安装qt插件

今天把自己在windowsXP下弄QT的东西整理一下,参考了网上的一些资料,把自己在vc6.0下安装qt的过程和大家一起分享一下. 1 编译QT 1)下载QT的源代码文件包(注意:必须是.zip后缀的,.exe后缀的包是用mingw做编译器的源代码文件)。 2)将QT源代码解压到硬盘。 例如: C:/Qt/4.3.0/ 或 C:/Qt/4.3.0-msvc/ 2 下载并安装允许QT用vc编译的...

物联网小镇的博客 871

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

使用vc9 编译Qt5.4

官方的Qt 只有vc10以上的版本 若是想vc9 只能自己编译so 开始干 搜索资料 1)vc9不能支持webkit的编译 直接删除掉 2)有部分地方 vc9默认支持LONG转ULONG 需要自己改代码 3)需要OPENSSL 4)需要python3.4.3 5)需要activePerl开工 1。下载安装activeperl 2。下载安装python3.4.3 3。编译open

FEI17N的专栏 818

QT5+VC2012配置以及常见错误

之前也接触过一段时间QT,自己笔记本也有环境,但是现在公司电脑上没有,现在要做跨平台的,所以想安装一下,在Linux RedHat 7下安装比较新的QT版本失败了,QT5.13,后来装了QT5.6就可以了。 Windows下同样也要安装,现在Windows下写代码再移植,环境是Win10+VC2012+QT5.5.1。 1.下载自己所需要的QT版本和VC插件 VC插件下载地址:http://dow...

发呆的程序猿 946

使用VC2005编译真正的静态Qt程序

转自: http://www.qtcn.org/bbs/read.php?tid=13825 如何使用VC2005编译“真正”的静态Qt应用程序(我非常讨厌引用或者转载别人的文章的时候不注明地址或者作者,希望读者能够改变我这个观点  :)  —— 夏威夷雪人)(下文只涉及windows,不谈及linux、unix等,另外,这里说的VC2005,是因为我用的是2005,其实其他版本的VC亦同

7847

QT与VC的区别

1. QT和VC目前最大的不同就是消息的管理   VC的不同对象之间发送消息是对象A发送一个消息给对象B就不管了,至于B对于此消息该什么响应函数来处理,由对象B自己定义的消息处理函数来响应;   而QT中,必须有一个平台来管理A-->B这个过程,它需要知道A发生了什么消息(...

chenkai5182的博客 1451

浅谈 Qt 静态编译

浅谈 Qt 静态编译 本文要讲解的是Qt 静态编译,Qt中默认的应该是动态编译,那么本文就浅淡的介绍一下静态编译,先来看内容。 作者:佚名来源:互联网|2011-06-21 16:51 收藏 分享 Qt 静态编译是本文要介绍的内容,首先,你应该该知道什么叫静态引用编译、什么叫动态引用编译。我这里只是简单的提提,具体的可以google一下。 动态引用编译,是指相关的库,以dll的形...

我的博客 1077

qt编译c语言dll,QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)

最近这阵子,接了个私活,封装一个开发包俗称的SDK给客户调用,查阅了不少人家的SDK,绝大部分用VC编写,并且VC6.0居多,估计也是为了兼容大量的XP用户及IE浏览器,XP自带了VC6.0运行库,因此无需兼带其余DLL便可运行。也发现有些用汇编和C封装的,那估计是高手才能编写啊!那怎么办呢?眼看一星期的交货期要到了,因为本人历来没有写过SDK开发包,内心那个着急啊,赶忙想出了三种处理方案。编程方...

weixin_31411313的博客 1388
上一篇: 在 VS2008 下操作 Excel 的方法总结
下一篇: vector 的删除操作pop_back、erase效率对比
efeics
博客等级 码龄18年 37粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值