解析 QT 4.5.1编译

移动开发
本篇文章介绍了QT 4.5.1编译的步骤。在坛上逛了之后,发现qt线程很不错,它提供了丰盛的多线程编程支撑:结构了一些基础的与平台无闭的线程等。先看看本文吧。

QT 4.5.1编译从 http://www.qtcentre.org/ 下载QT源代码,注意是源代码。我下载到的是QT4.5.1版,文件名为qt-win-opensource-src-4.5.1.zip。

解压,注意不要解压路径不要含有空格或中文,我把它解压到了d:\qt451里

准备一个存放编译后“成品”的文件夹,我准备放在d:\qt451\static里

QT源码里的“mkspecs” 文件夹复制到准备存放“成品”的地方,比如我的就是把d:\qt451\qt-win-opensource-src-4.5.1\mkspecs复制到d:\qt451\static里

用记事本或其它编辑器打开D:\qt451\static\mkspecs\win32-msvc2005\qmake.conf(注 意VC版本号),按需要修改:

如果不希望编译出来的DLL或EXE链接到VC运行时库,就把-MD改成-MT,把-MDd改成-MTd(查找替换)。

如 果做了上一步,那么就不需要嵌入manifest了,去掉CONFIG+= 后面的embed_manifest_dll embed_manifest_exe。

VC默认是“将wchar_t 视为内置类型”的,所以建议去掉-Zc:wchar_t-, 否则以后用到一些与wchar_t有关的函数(如fromWCharArray)时,就要在项目属性里设置“将wchar_t视为内置类型”为No了)。

进入“Visual Studio 2005 命令提示”,其它版本的VC也一样。

进入解压的地方,比如我的: cd d:\qt451\qt-win-opensource-src-4.5.1。(小提示,在控制台里输入前几个字符再按tab 键,可以自动填充路径、文件名,MS在向Linux Shell学习?)

键入命令

  1. configure -prefix d:\qt451\static -debug-and-release -static   
  2. -opensource -no-qt3support -no-dbus -no-phonon -no-webkit  
  3.  -qt-gif -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg  

输入configure -help可以显示所有选项的帮助信息,上面是我用的选项,解释一下:

-prefix 路径名 编译后的安装路径

-debug-and-release 编译Debug和Release版本

-static 编译静态库,如果不指定,默认为编译成DLL

-opensource 使用LGPL协议,如果不指定也行,configure运行后会问的

-no-qt3support 不用编译与QT3兼容的一些废弃函数,如果你比较熟悉QT3,还是去掉它吧

-no-dbus 不用链接到DBus库,这个库偶好像在Linux里看到过,Windows里不用。

-no-phonon 同上,不要链接

-no-webkit 是否编译Web相关的一些QT子库,加上这个可以省不少编译时间,就看你是否准备用这些库了。

-qt-gif 使用QT自带的gif库

-qt-zlib 使用QT自带的zlib库

-qt-libpng 使用QT自带的libpng库

-qt-libmng 使用QT自带的libmng库

-qt-libtiff 使用QT自带的libtiff库

-qt-libjpeg 使用QT自带的libjpeg库

configure可能要花几分钟时间,成功后再输入nmake开 始编译,编译会花去大概1小时(和配置有关啦,我是以我的老爷机为参考的)。

输入nmake install

如果没出错的话,“QT成品”就已经在我们之前建立的成品路径里了(我的是d:\qt451\static)

VC只需要成品路径里的东东就够了,如果你想,可以删除解压的那些源代码省点空间。

测试是否成功

1、打开VC

2、新建项目

3、设置项目属性

4、配置属性->C/C++->常规->附加包含目录:D:\qt451\ static\include

5、配置属性->C/C++->代码生成->运行时库:多线程调试(/MTd),这 条依据你当时修改qmake.conf的情况决定

6、配置属性->链接器->常规->附加库目录:d:\qt451\static\ lib

7、配置属性->链接器->输入->附加依赖项:qtmaind.lib QtCored4.lib QtGuid4.lib,如果要编译Release,把后面的d去掉。

代码:

  1. #include <Qt/QtGui> 
  2. int APIENTRY _tWinMain(HINSTANCE hInstance,  
  3.                      HINSTANCE hPrevInstance,  
  4.                      LPTSTR    lpCmdLine,  
  5.                      int       nCmdShow)  
  6. {  
  7.  QApplication app(__argc, __argv);  
  8.  QLabel *label = new QLabel("Hello Qt!");  
  9.  label->show();  
  10.  return app.exec();  

注:如果编译的是动态库,那么要把QT成品里的bin目录加入path系统变量,或者把这里用到的DLL复制到与你的程序相同的目录里,一般是 QtCore4.dll和QtGui4.dll(Debug版为QtCored4.dll和QtGuid4.dll),依你使用的子库而定。

【编辑推荐】

解析 QT 静态库和动态库

 深度解析 QT 编译安装方法

深度解析嵌入式QT开发环境搭建

Qt和KDE在未来将面临新的挑战和机遇

Linux下应用程序开发之QT的信号与槽机制

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-08 15:27:24

QT QT 4.5 编译

2011-06-14 13:59:09

Qt Qt 4.7.3 MYsql

2011-06-09 14:56:53

QT 编译

2011-06-28 13:47:37

Embedded QT ARM

2011-06-17 09:19:03

Qt 4.5.1 Sqlite 移植

2011-07-05 14:06:17

编译 Qt

2011-06-17 09:34:02

Qt 4.5.1 Sqlite 移植

2011-06-21 16:51:21

Qt 静态 编译

2011-06-09 16:47:56

Qt 嵌入式

2011-06-24 13:38:32

QT 编译 安装

2011-06-29 10:30:04

VC2005 QT QT 4.4.3

2011-09-09 17:59:26

QT Widget

2011-07-01 15:04:49

Qt 内省

2011-06-23 15:32:05

Qt Windows消息

2011-06-30 14:44:16

QT Qvfb Embedded

2011-06-16 09:10:49

Qt Symbian Nokia

2011-06-23 16:24:21

Qt Embedded 交叉编译

2011-06-23 18:16:59

Qt Qtopia

2011-07-05 09:25:05

Qt MySQL 驱动

2011-06-14 14:22:01

Qt ucdmc Creator
点赞
收藏

51CTO技术栈公众号