• 8237阅读
  • 1回复

如何静态编译QT [复制链接]

上一主题 下一主题
离线kevdmx
 

只看楼主 倒序阅读 楼主  发表于: 2008-11-15
— 本帖被 XChinux 执行加亮操作(2008-11-15) —
说到静态编译,不得不提起夏威夷雪人的《使用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~~
尹曙光


出处: http://kevdmx.blog.51cto.com/429766/112975
离线cxjnet
只看该作者 1楼 发表于: 2009-01-07
呵呵,回去试下看看
快速回复
限100 字节
 
上一个 下一个