前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows下Qt静态编译全解

Windows下Qt静态编译全解

作者头像
用户3519280
发布2023-07-06 13:43:03
5390
发布2023-07-06 13:43:03
举报
文章被收录于专栏:c++ 学习分享

Windows下Qt静态编译全解

编译准备

下载NOKIA网站上的QT SDK,解压或安装到相关目录。 本文以QT 4.6.2为例,下载地址:http://get.qt.nokia.com/qt/source/qt-win-opensource-4.6.2-vs2008.exe

或者直接下载源码:http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.zip

下载后安装好的目录结构为(假设安装到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++ -debug-and-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%的大小。

以上过程参照http://blog.csdn.net/SysThink/archive/2010/05/15/5596060.aspx的工作。

在运行configure的时候,可能会遇到这样的问题:

Could not find mkspecs for your QMAKESPEC(win32-g++) after trying: C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_cre ate_more/Troll/4.5.0/qt\mkspecs Error processing project file: C:/Qt/2009.01/qt/projects.pro Qmake failed, return code 3

实际上Qt并不是装在C:/qt-greenhouse/Trolltech/Code_less_create_more/Trolltech/Code_less_create_more/Troll/4.5.0/目录下的,但是无论怎么修改配置都是不对。然后我找到了一种解决办法:

mkdir C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\

junction C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\4.5.0 :\Programmation\2009.01

configure -release -static -fast -accessibility -no-qt3support -no-stl -no-phonon -no-scripttools -no-openssl -no-opengl

mingw32-make

解释一下:

这个就是创建configure需要的目录,然后从我们实际安装路径链接过去。

其中junction可以在http://www.qtforum.org/index.php?page=ExternalLink&url=http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx下载。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Windows下Qt静态编译全解
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档