如何静态编译QT

说到静态编译,不得不提起夏威夷雪人的《使用VC2005编译真正的静态Qt程序》一文,在此向夏威夷雪人致敬!
 
静态编译QT涉及到两个方面:
 
1.静态编译QT,使程序可以将静态库的形式使用QT,这个好办,在configure.exe 程序的参数下,给上-static参数即可。

2.QT使用了VC的链接库也要静态链接。这个就有点难办了,因为QT默认的使用方式是动态的,不过,有了前人的研究就好办了,打开<qt-
install-dir>\mkspecs\win32-msvc2005\qmake.conf文件(VS2005,如果是VC6,则是<qt-install-dir>\mkspecs\win32-msvc\qmake.conf,
VS2003:<qt-install-dir>\mkspecs\win32-msvc.net\qmake.conf,相信现在没有人用VS2002吧),将下面两行:
 
QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_DEBUG = -Zi -MDd
 
改为:
 
QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_DEBUG = -Zi -MTd
 
就好了。这是VS2005的示例,如果你是其他版本的VS,则会有些区别,但只要将MD(动态)改为MT(静态),将MDD(动态调试)改为MTD(静
态调试),就好了。

如果你有多个版本的VS安装在系统上,则在configure.exe的命令行参数给上-platform win32-msvc2005,就可以使用VS2005编译了,其他的VS
版本可以在README中找到:

  win32-g++
  win32-icc (commercial edition only)
  win32-msvc (commercial edition only)
  win32-msvc.net (commercial edition only)
  win32-msvc2005 (commercial edition only)
 
改好了,就可以用 configure -platform win32-msvc2005 -debug-and-release -static -fast -qt-sql-sqlite 来配置系统了。

配置完成后,nmake编译之。
 
关于configure更详细的参数信息,请使用 configure --help查看。

~~THE END~~
尹曙光

### 如何静态编译Qt 为了创建易于分发的应用程序,可以按照以下方法来实现Qt项目的静态编译[^1]。 #### 准备工作 确保已经完成Qt项目开发并测试通过。此时使用的还是动态链接库版本的Qt。 #### 编译静态链接库 需要先编译适用于静态链接的Qt库,此过程只需执行一次即可。具体操作取决于所用的操作系统以及构建工具链设置。对于Windows平台下的MinGW环境来说,可以通过命令行进入解压后的源码目录,并输入如下指令: ```bash configure -static -release -platform win32-g++ mingw32-make sub-src ``` 上述命令会配置Qt以便于生成静态库,并启动实际的编译流程。请注意路径和参数可能依据具体的安装情况有所不同。 #### 修改pro文件以包含必要的插件 为了让最终可执行文件能够正常运作,还需要加入一些额外的依赖项到`.pro`工程文件里。例如图像处理相关的模块就需要显式指定其位置,像这样: ```plaintext LIBS += path_to_plugins/imageformats/libqgif.a \ path_to_plugins/imageformats/libqjpeg.a \ path_to_plugins/codecs/libqcncodecs.a \ path_to_plugins/imageformats/libqico.a ``` 这里的`path_to_plugins`应当替换为真实的绝对或相对路径[^3]。 #### 构建发布版应用 最后一步就是利用之前准备好的静态库重新编译整个工程项目了。记得切换至Release模式下进行编译优化,从而获得更高效的二进制文件。如果一切顺利的话,现在应该能得到一个独立性强、体积较大的单个.exe文件。 #### 验证结果 成功之后就可以尝试运行新产生的exe文件,确认它可以在脱离原开发环境的情况下稳定工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值