Desert分享 http://blog.sciencenet.cn/u/chuangma2006 Early Birds

博文

成功利用Visual Studio 2010编译QT,发布不依赖QT dll的应用程序

已有 16262 次阅读 2012-4-15 13:55 |个人分类:QT|系统分类:科研笔记| windows, 静态链接库

关键词:静态链接库(static link library), Windows, Microsoft Visual Studio 2010, QT libraries. QT creator, qmake

目标:利用QT静态链接库文件编译C++代码,发布不依赖QT dll和C++ complier dll文件的、windows平台下的应用程序。

基本步骤:

1)编译QT静态链接库
这一步网上有诸多文章介绍,但是大多是针对Microsoft Visual Studio 2008及以前版本,且当时QT没有release 这些c++ complier相应的libraries,导致设置过程相对繁杂,常导致漫长的编译过程过后,出现诸多令人心碎的错误(fatal error)(本人就在此步耗掉了大量时间和脑细胞,最后还是以失败告终)。现在VS2010以及对应的QT libraries已经发布, 大大简化了编译过程,一次成功编译通过。基本过程如下:

1.1) 下载并安装VS2010 expression版本(免费,下载地址:http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express).注意所有安装路径不要有blank characters.

1.2) 下载并安装 QT libraries 4.8.1 for windows(For VS2010, 下载地址:http://qt.nokia.com/downloads/downloads#qt-lib)。

1.3)进入QT libraries 4.8.1的安装目录下的“mkspecswin32-msvc2010”文件夹,修改qmake.conf文件中的五项内容为:
a) CONFIG                  += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target
b) QMAKE_CFLAGS            = -nologo -Zm200 -Zc:wchar_t
c) QMAKE_CFLAGS_RELEASE    = -O2 -MT
d) QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
e) QMAKE_CFLAGS_DEBUG      = -Zi -MTd

1.4) 保存关闭qmake.conf文件后, 打开QT 4.8.1 command Prompt (开始菜单-> QT by Nokia v4.8.1-> QT 4.8.1 command Prompt). 此时,程序会自动设置QTDIR,添加Path路径等。这里只需要执行configure命令。我用的命令如下:
configure -platform win32-msvc2010 -static -fast -release -no-qt3support -no-qmake -no-webkit -no-plugin-manifests
值得注意的是,一定要选择-static参数,编译平台(win32-msvc2010)应该不用设置,不过加上也无妨。

1.5) configure过程一般不会出现啥问题。configure完成后,会提示你re-configure or 进入下一步(nmake)。这里为了简化时间,建议只编译source code。依然在QT 4.8.1 command Prompt环境下,cd 进入 QT library 4.8.1安装目录下的src文件夹,然后再执行nmake.

1.6) nmake过程十分缓慢(在Thinkpad T400下,编译过程差不多40分钟),你可以考虑并行的编译方式。在nmake成功后,继续执行命令nmake install和nmake clean。至此,QT的静态库已编译出来,在QT libraries 4.8.1的lib文件夹下,会看到类似QTCored4.dll文件。

2) 利用QT静态库编译不依赖QT dll的windows应用程序
2.1)安装QT creator 2.4 for windows (http://qt.nokia.com/downloads/downloads#qt-creator)。你也可以考虑安装功能更强大的QT SDK。

2.2)在QT creator环境下写code,做GUI。然后build你的project,生成的exe文件会自动包含所需的dll文件,这样copy到别的计算机下,也可以直接运行。

2.3)如果你想update QT以前版本下写的project。如果直接load your project, 会出现找不到QtCore.lib等错误。一个解决方案是利用qmake重新构建你的project file。 基本过程是:qmake -project; qmake; make.

另: 利用VS2008对QT4.7.1进行静态编译,可以参考这篇文章“也谈QT4.7静态编译”(http://bbs.sciencenet.cn/home.php?mod=space&uid=655584&do=blog&quickforward=1&id=559490 or http://www.51hei.com/mcu/1186.html)。



https://blog.sciencenet.cn/blog-655584-559482.html

上一篇:From cluster to tree view
下一篇:Installing R from CRAN on Ubuntu: No Public Key Error
收藏 IP: 68.230.52.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-16 15:26

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部