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

时间:2022-08-19 17:07:58
搭建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)