您的位置:首页 > 编程语言 > Qt开发

搭建Windows平台下针对MinGW编译器的Qt4开发环境

2012-10-17 12:18 549 查看
搭建Windows平台下针对MinGW编译器的Qt4开发环境 (2007-08-07 14:42:35)转载

标签: IT/科技 qt 分类: 软件开发

搭建Windows平台下针对MinGW编译器的Qt4开发环境

(C)JavaGuru,原创文章,转载请注明出处http://hi.baidu.com/javaguru/blog

由于对Linux不熟悉,平时多用Windows,就只能搭建一个Win版的Qt4开发环境了,日后熟悉Linux平台了再做Linux版的了。

1、Qt库和平台的关系

Qt库提供针对各种平台的对应版本,如Linux、Windows、Mac,以及嵌入式OS等

在此我们选择Windows平台的Qt库:qt-win-opensource-src-4.2.2.zip

注意不要用qt-win-opensource-4.2.2-mingw.exe

2、Qt库和编译器的关系

对于Windows平台上的Qt库,它需要针对不同的编译器Compiler,创建不同形式的库文件。

如针对MinGW Compiler的库文件,不能用于MSVC Compiler编译器生成可执行文件。反之亦然。

例如MinGW Compiler的库文件为.a格式,而MSVC Compiler的库文件为.lib,

因此,使用不同的IDE(Compiler)时,需要先创建不同格式的库文件。

3、配置OS环境变量和编译生成专用Qt库

以编译针对MinGW Compiler的Qt库文件为例,

A、配置OS环境变量:

新建一个批处理文件EV.bat,内容如下:

set QTDIR=c:\qt\4.2.2

set QMAKESPEC=win32-g++ // 设置相应的编译器,这个名称对应c:\qt\mkspecs目录下的同名目录

set path=c:\qt\4.2.2\bin

(似乎还要添加编译器的环境变量)

B、编译Qt库

在编译Qt库之前,要先安装编译器,并配置编译器需要的环境变量。

有些用户在系统中安装了多个编译器(IDE),可能会影响Qt库的编译。

下面我们开始编译Qt库:

打开命令行窗口,输入:

c:

cd qt\4.2.2

configure

开始Buiding,并可能出现一些提示,请根据情况选择。

然后,输入:

make

注意,如果你的计算机上安装了c++ builder, cb 下会有个make.exe 文件,

系统可能会把 MinGW下的make.bat 文件搞错。这里用 MinGW Compiler 的 mingw32-make。

确保正确配置了MinGW Compiler的环境变量PATH,将其指向MinGW的路径。

不想出错的话,准确地指定命令,输入:

mingw32-make

好了,现在你可以泡上一杯茶,慢慢等待编译结果。

我的机器CPU-P42.66G,内存1G,用了2小时多一点。

编译完成后,转到c:\qt\4.2.2\lib下查看是否生成了许多lib文件,我用的Qt4开源版编译生成了

24个库文件。如果此目录为空,估计是编译失败,请重头再来。

4、配置IDE开发环境。

打开Dev-Cpp,在"工具"-"编译选项"里设置:

A、设置inlcude头文件c:\qt\4.2.2\include

B、设置lib库文件c:\qt\4.2.2\lib

在"工程"-"工程属性"里设置:

C、设置连接器库文件,将c:\qt\4.2.2\lib加入其中。

5、编写测试例程。

打开Dev-Cpp,建立一个控制台应用程序,新建一个.cpp文件。

然后把下面代码复制、粘贴进去。

#include <Qt/QApplication.h>

#include <Qt/QWidget.h>

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

QWidget widget;

widget.setWindowTitle( "Hello, Qt!" );

widget.show();



return app.exec();

}

编译执行,然后会弹出一个标题为“Hello, Qt!”的窗口。

至此,完成了开发环境的配置,你可以开始Qt编程,Good luck to you.

大家有问题,可以到群里交流. Qt编程技术群 26356297

/////////////////////////////////////////////////////////////////////////////////////////////////////////

前言:本人连续10多次编译QT库失败,现总结经验,以飼后来者。

QT编译主要有两步:configure配置QT,make生成平台相关的QT库,下面分别说明。

第一步:configure

  configure这一步很关键。主要目的有两个,一是根据环境变量QTDIR,QMAKESPEC和PATH来生成平台相关的qmake.exe;二是,顾名思义,配置QT环境了,比如源文件放在哪里,库在哪里,是否支持OpenGL等等。想了解如何配置可以在QTDIR中打上"configure --help"(UNIX风格)

  生成QMAKE一般问题不大,只要有支持的编译器再设好环境变量就行了。到QTDIR的readme里找出适合自己的编译器,然后指定给QMAKESPEC;QTDIR的真实路径中不要包含空格,如"C:\Program Files\QT"就不行;path就不用说了。

  此处经常出错的地方就是rcc.exe和uic.exe。如果你从别的地方把它们拷了过来,一时搪塞过这一关,那么很可能造成下一步make时会再次遇到该问题,正确的做法先运行一次configure,以产生qmake,然后切换到src目录,qmake,(n)make.至于为什么要这么做,看QT4.2.2 for vs2005 就是了,它在安装过程中就没有编译(否则不会很快就安装完),装完后bin目录下已有很多exe,dll之类的文件了。

  

  至于编译器,最好用“现代版”的,这样对C++标准的支持要好些,难道还有人在用VC6这样的残缺古董?我用的是VS2005+SP1,没有把VS2005装在系统盘里的朋友要注意了,如果你的还原时只还原系统盘,很可能造成QT无法编译安装!本人为此折腾了两三天,也为的是备份/还原系统方便,把程序都装在了D盘,用了大半年都没问题,这次给撞上了:不是configure的时候出错,就是nmake时出错。错误提示信息为“...\uic.exe 不是内部或外部程序,也不是可运行的程序”、“U1077, cl.exe异常退出,0x2”之类。前前后后把QT编译了N次总是有这样那样的错误,最后想起来上次成功是在没有还原系统的情况下编译的,可能是系统盘中某些VS信息与程序盘中的对不上号,所以重装VS2005+SP1,然后就一切顺利,而且在公司机器和自己的笔记本上都这样。所以,还是把VS2005装到系统盘为好。另外一个问题就是SP1的一个BUG:你在configure的时候它会报错,说位置在qmap.h,qhash.h这两个文件中,等MS发布这个BUG的补丁太漫长了,所以只能改这两个文件的代码以避开此BUG,方法:把QMap和QHash模板中的replace()和insert()成员函数均改为在类内实现,把外部实现(在文件末尾处)注释掉即可。看起来VS2005这么麻烦,我在VC6下做了个实验,一切顺利,看来古老有古老的好处。

第二步:make

  这一步是根据configure时由qmake生成的makefile来编译QT库。只要前面配置好,一般就不会出什么问题。如果有rcc.exe和uic.exe之类的错误,建议重新make一下src目录。

注意事项:

  在编译QT前应准备2G的磁盘剩余空间,其实编译完后QT目录占1.6xGB,剩下的是给“磁盘空间不足”的警告来用的。另外QT库的编译时间很漫长(3个小时左右,IBM ThinkPad T30标配机器)。这里给个参考,以便朋友们编译时心里有个数。我是这样的,configure和nmake的时候均把屏幕输出重定向到文本文件里,configure会有五六百行的输出,大小三四十KB,耗时六七分钟;nmake会有近七千行的输出,大小2MB左右,耗时约三小时。这样的话看看文件大小或打开输出文件看行号,就知道现在大约进行到哪里了。附件里是我的configure和nmake输出文件,注意License信息不可用,发这篇文章时我给改了。

///////////////////////////////////////////////////////////////////////

Qt集成到VS2008中 ( Qt4.5.1 + qt-vs-addin-1.0.0 )

分类: Qt 2009-05-11 00:30 12500人阅读 评论(39) 收藏 举报

如何将Qt集成到VS中,网上已经有不少的文章。我前一段时间试了一下,花了三天时间,编译了好几次才算是完全编译成功,并把Qt4.5.1集成到了VS2008中。在这里把经验分享一下。

1、首先确保VS2008安装好,我用的是VS2008英文版,最好不要用Express版的,因为如果用这个精简版本,qt-vs-addin装不上去。而且VS2008中文版我试过,qt-vs-addin不能用,不知道是怎么回事。

2、下载qt-win-opensource-src-4.5.1.zip,(http://get.qtsoftware.com/qt/source/qt-win-opensource-src-4.5.1.zip),解压到某一个文件夹,如L:/qt-win-opensource-src-4.5.1。

3、添加环境变量.如果你的登录名是administrator,则在“administrator的用户变量”中添加一个QTDIR,值为:L:/qt-win-opensource-src-4.5.1。另外,在“系统变量”中的Path变量中添加L:/qt-win-opensource-src-4.5.1/bin,用“;”隔开。如把Path值改成L:/qt-win-opensource-src-4.5.1/bin;%SystemRoot%/system32;%SystemRoot%;

4、使用Visual Studio 2008 Command Prompt,进入Microsoft Visual Studio 9.0/Common7/Tools/目录下,执行vsvars32.bat,执行完,进入L:/qt-win-opensource-src-4.5.1。

5、输入指令: configure -platform win32-msvc2008 -debug-and-release。 等一阵子,大概十几分钟,configure就会完成。这一步一定要注意,我前几次编译没通过都是因为configure参数出了问题。网上绝大多数帖子都说加上个static参数。我感觉这个静态编译参数没有必要,而且编译后体积太大。仅仅一个hello world控制台应用程序都快上M了。一个空的Qt GUI应用程序都好几M,虽然可以只用一个可执行文件就可以拿到别的机子上跑,可是如果有几个可执行文件,就很不划算了,每个都好几M,加起来会很臃肿,Qt官方文档中也不提倡这么做。还有,加上-static就无法编译通过。如果第一个理由不足以说服你放弃static,那第二个总可以了吧,呵呵。有两次,我加了static参数,头一次编译到webKit的时候报错,无法继续编译了。第二次,我用-no-webkit不编译webkit,可是到了Opengl又出问题了。提示说什么变量名冲突,结果又一次没编译通过。后来不用static就编译成功了。

6、输入nmake。等上4-6个小时,就完成编译了。占用10G硬盘空间。

7、这一步很重要,关系到是否能用qt-vs-addin。

把L:/qt-win-opensource-src-4.5.1下的.qmake.cache和configure.cache这两个文件手动备份到另一个地方。然后输入指令:

nmake confclean;

8、几分钟后,清理完成,那个文件夹会从10G锐减到700M,这个时候再把刚备份的.qmake.cache和configure.cache拷回原处。这时候最好把编译后的一堆东西打个包备个份,免得下次又要编译几个小时...打包之后只有207M

9、安装qt-vs-addin (http://get.qtsoftware.com/vsaddin/qt-vs-addin-1.0.0.exe) 。

装完之后,打开VS2008,菜单栏会多出一个Qt选项,选择Qt选项下的Qt Options,在Qt Versions中添加路径,点击Add,选择路径L:/qt-win-opensource-src-4.5.1,OK。(如果第7步中没有备份并还原.qmake.cache和configure.cache这两个文件,这里是无法添加的)

10、大功告成,辛辛苦苦编译了半天终于可以爽一把了。呵呵

红色的部分是特别需要注意的,这里搞好了就基本没什么问题了。

另外4-7都是在VS的命令提示符下完成的。至于备份.qmake.cache和configure.cache这两个文件当然可以手动copy。



///////////////////////////////

qt 与 vs2008 集成过程总结

t 与 vs2008 集成过程总结 (2008-11-12 16:36:55)转载

标签: qt vs2008 集成 杂谈 分类: 程序开发

参考文章:
http://blog.csdn.net/ztz0223/archive/2008/03/13/2177172.aspx http://control.blog.sina.com.cn/admin/article/article_add.php http://www.qtcn.org/bbs/read.php?tid=9749
首先到qt官方网站下载最新的qt-win-opensource-src-4.3.4,现在有4.4.0 beta了,我编译过一次

好像不行可能是自己的问题。

回到正题,下载的qt-win-opensource-src-4.3.4解压到命令行可以访问的一个磁盘,好像ntfs格式的磁盘cmd不可以访问,我选择放到c盘根目录下。

然后设置系统的环境变量参数:

右击我的电脑--属性--高级选项卡--环境变量

在用户定义变量里面设置

名字:QTDIR

值: C:\qt-win-opensource-src-4.3.4

这里有一点要声明一下,我用的英文版的xp,上面的相关术语是我自己翻译过来的,自己研究一下呵呵

然后:

在系统变量里面找到一个path的量,其实path还是PATH没有关系的,windows不区分大小写

edit:

添加:

;C:\qt-win-opensource-src-4.3.4\bin

记得带上“;”号



然后把qt源文件下的lib,bin,include目录添加到vs2008的vc++路径下去



如上开始进入到编译工作:

打开vs2008 x64的命令行工具,echo &path,如果没有东西,那么就要执行一下下面的一个批处理文件:dir一下:

Setting environment for using Microsoft Visual Studio 2008 x86 tools.

C:\Program Files\Microsoft Visual Studio 9.0\VC>dir

Volume in drive C has no label.

Volume Serial Number is CC13-8862

Directory of C:\Program Files\Microsoft Visual Studio 9.0\VC

2008-03-09 11:25 <DIR> .

2008-03-09 11:25 <DIR> ..

2008-03-09 11:25 <DIR> atlmfc

2008-03-09 11:23 <DIR> bin

2008-03-09 11:24 <DIR> ce

2008-03-09 11:25 <DIR> crt

2008-03-09 11:25 <DIR> include

2008-03-09 11:25 <DIR> lib

2008-03-09 11:25 <DIR> redist

2008-03-09 11:23 <DIR> VCAddClass

2008-03-09 11:22 <DIR> VCContextItems

2007-01-14 15:01 159 vcEmptyTestProject.vsz

2008-03-09 11:22 <DIR> VCNewItems

2008-03-09 11:24 <DIR> vcpackages

2008-03-09 11:23 <DIR> VCProjectDefaults

2008-03-09 11:23 <DIR> vcprojectitems

2008-03-09 11:25 <DIR> vcprojects

2008-03-09 11:23 <DIR> VCResourceTemplates

2008-03-09 11:24 <DIR> vcsmartdeviceprojectdefaults

2005-01-06 07:51 1,247 vcvarsall.bat

2008-03-09 11:25 <DIR> VCWizards

2 File(s) 1,406 bytes

19 Dir(s) 4,288,942,080 bytes free

C:\Program Files\Microsoft Visual Studio 9.0\VC>vcvarsall.bat

之后就可以 echo &path了如下:

PATH=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN;C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools;C:\WINDOWS\Microsoft.NET\Framework\v3.5;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program
Files\Microsoft Visual Studio 9.0\VC\VCPackages;C:\Program Files\\Microsoft SDKs\Windows\v6.0A\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\qt-win-opensource-src-4.3.4\bin

;C:\qt-win-opensource-src-4.3.4\bin

这个就是我们加进去的路径了

然后,> cd c:\qt*

>configure,等到出现配置的对话时,选择y开始配置,配置成功的话,可以开始nmake了。

一般的nmake是不会完全成功的,但是一般的在bin文件夹下面 qmake肯定会生成成功,还有rcc,uic,uic3以及一些lib文件。

或许,还会生成assistant等一些工具。

失败了?

没有!

进入tools工具文件夹,双击tools.dsw,就会打开vs2008,而且会提示你把改工程文件转换,选择“全是”就ok了。

此时在tools文件夹下产生了一个tools.ncb,其实这个就是开始编译失败的原因,因为这个下面开始没有这个文件,现在有了,我们可以开始编译了,不过这次我们用vs2008再编译工具,比如assistant,designer,linguist等等。

然后选择“生成”--“生成解决方案”

等编译完成之后,一切ok啦,在C:\qt-win-opensource-src-4.3.4\bin就会有很多东西如图:

到此为止,一切就不是很顺利的成功了,希望有和我一样爱好的朋友,顺利成功!

下面用一个小程序测试一下

创建文件名为hello.cpp,输入如下代码:

#include <QApplication>

#include <QLabel>

int main(int argc, char **argv) {

QApplication app(argc, argv);

QLabel *label = new QLabel("Hello World!");



label->show();

return app.exec();

}

然后

prompt> qmake -project -o hello.pro

prompt> qmake

prompt> nmake

就会在debug文件夹下生成一个.exe文件。

qmake

用vs2008打开项目

编辑ui

执行bin目录下的designer.exe

存盘,

uic -o xxx.h xxx.ui

复制到项目下面

执行qmake

用vs2008打开

字符串使用gbk编码(全局)

main函数加入

QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));.

另外一种方法:在vc中编译

首先要用命令行根据pro文件生成vc的工程文件 dsp

F:〉jjk\456\ qmake –t vcapp *.cpp

打开vc6.0

File----open ---从文件类型中选择projects(.dsp)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: