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

时间:2021-08-26 04:54:19

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

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

(C)ShiShengSoft原创文章,转载请注明出处:http://blog.csdn.net/shishengsoft/

由于对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

javaguru 2007-03-18 12:58
以上可能有些地方描述不太正确,或者有误,欢迎大家指正!

wjfree 2007-03-18 22:26
在win下如非必要,完全可以安装已经编译好的版本

bobic 2007-03-19 17:51
DEVCPP做IDE的话,有些令人失望!
推荐使用
QT(mingw版)+mingw+slickedit
slickedit 非常棒的IDE.

wth123456 2007-03-27 21:11
好了,现在你可以泡上一杯茶,慢慢等待编译结果。
我的机器CPU-P42.66G,内存1G,用了2小时多一点。

两个小时可以睡觉去。茶怎么喝呀。

还有请问需要用多少硬盘空间。还有就是为什么不能用qt-win-opensource-4.2.2-mingw.exe
谢谢

肖鹏 2007-05-15 07:25
以上都作过了,但是测试代码的编译没有通过!是连接错误,而且我看了一下Qt的库文件所在目录,没有生成.lib文件!只有lib*.a文件和*.dll、*d.dll文件!在win上编译应该需要的是*.lib文件吧?即使是*.dll文件,也需要*.lib的导入库文件对吧?

elgnaw 2007-06-07 10:25
mingw32-make[2]: *** [release\qfsfileengine.o] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/4.3.0/src/tools/moc'
mingw32-make[1]: *** [release] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.3.0/src/tools/moc'
mingw32-make: *** [sub-moc-make_default-ordered] Error 2
还是装不上!

hyrish 2007-06-11 16:57
不用一次把所有的库都编译完吧
这样要等两个多小时,如果机子再烂一点五个小时也不稀奇
可以先编译一些常用工具,如make.exe,moc.exe,rcc.exe,uic.exe等
以及经常用到的一些库,libqtcore.a,qtcore.dll,libqtmain.a,libqtGui.a,qtGui.dll等
以后用到编译其它的也很方便,节约时间啊
需要调试库就编译调试库,不过调试可是相当大的,比较占磁盘空间

socks 2007-12-18 17:35
引用 引用第3楼bobic于2007-03-19 17:51发表的  :
DEVCPP做IDE的话,有些令人失望!
推荐使用
QT(mingw版)+mingw+slickedit
slickedit 非常棒的IDE.


你有好版本的slickedit 么?官网的好像是试用的,给发个谢谢
tcxp2000@163.com

tuhao007 2008-05-04 11:49
基本没什么价值

xiaoshu666 2008-05-06 17:50
我也没成功
器: Default compiler
Building Makefile: "E:\qtpro\Makefile.win"
执行  make...
make.exe -f "E:\qtpro\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"E:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"E:/Dev-Cpp/include/c++/3.4.2/backward"  -I"E:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"E:/Dev-Cpp/include/c++/3.4.2"  -I"E:/Dev-Cpp/include"  -I"E:/qt/include"  

g++.exe main.o  -o "qtpro.exe" -L"E:/Dev-Cpp/lib" -L"E:/qt/lib"  

main.o(.text+0x182):main.cpp: undefined reference to `_imp___ZN12QApplicationC1ERiPPci'
main.o(.text+0x1c5):main.cpp: undefined reference to `_imp___ZN7QWidgetC1EPS_6QFlagsIN2Qt10WindowTypeEE'
main.o(.text+0x1f6):main.cpp: undefined reference to `_imp___ZN7QWidget14setWindowTitleERK7QString'
main.o(.text+0x28d):main.cpp: undefined reference to `_imp___ZN12QApplication4execEv'
main.o(.text+0x2aa):main.cpp: undefined reference to `QWidget::~QWidget()'
main.o(.text+0x2bf):main.cpp: undefined reference to `QApplication::~QApplication()'
main.o(.text+0x2ee):main.cpp: undefined reference to `QWidget::~QWidget()'
main.o(.text+0x31b):main.cpp: undefined reference to `QApplication::~QApplication()'
main.o(.text$_ZN7QStringD1Ev[QString::~QString()]+0x20):main.cpp: undefined reference to `_imp___ZN7QString4freeEPNS_4DataE'
main.o(.text$_ZN7QStringC1EPKc[QString::QString(char const*)]+0x19):main.cpp: undefined reference to `_imp___ZN7QString16fromAscii_helperEPKci'
collect2: ld returned 1 exit status

make.exe: *** [qtpro.exe] Error 1

执行结束

giscn 2008-05-09 04:39
Mingw32 + eclipse + qt integration for eclipse 
是不错的组合
不过eclipse基于java,性能不是很好了
qt也有for visual studio的integration,不过是商业的
slickedit第一次听到,看看先

crob 2008-06-14 15:06
slickedit太慢了, codeblock好用

carlward 2008-06-14 23:59
能在 WIN 下开发,应该是比较有前途的。
但我的收藏夹怎么只能收藏一个帖子?

XChinux 2008-06-15 01:28
引用 引用第5楼肖鹏于2007-05-15 07:25发表的  :
以上都作过了,但是测试代码的编译没有通过!是连接错误,而且我看了一下Qt的库文件所在目录,没有生成.lib文件!只有lib*.a文件和*.dll、*d.dll文件!在win上编译应该需要的是*.lib文件吧?即使是*.dll文件,也需要*.lib的导入库文件对吧?


.a是供mingw用的,而.lib是供其它编译器比如msvc, bcc等用的。

lee51525125 2009-03-16 23:02
引用 引用第2楼wjfree于2007-03-18 22:26发表的  :
在win下如非必要,完全可以安装已经编译好的版本

我用我以前编过的qt包没有成功。。什么原因?

溟阡 2009-03-17 14:20
找不到 D:\Program Files\qt\qt-win-opensource-src-4.4.3\qmake\project.o
mingw32-make: *** No rule to make target `D:\Program', needed by `project.o'.  S
top.
Building qmake failed, return code 2

configure的时候出现了这个 应该怎么办啊?

single_bride 2009-07-27 16:18
(似乎还要添加编译器的环境变量)


这句到底想怎样啊!!!
安装不了
问题太多

longzh0542 2010-02-28 11:03
引用 引用第17楼single_bride于2009-07-27 16:18发表的  :
(似乎还要添加编译器的环境变量)


这句到底想怎样啊!!!
安装不了
.......


在设置环境变量时 还要加上 编译器的环境变量(如下:)
    PATH=C:\qt\4.3.1\bin;C:\Dev-Cpp\bin;C:\Dev-Cpp\mingw32\bin

        QMAKESPEC=win32-g++

        QTDIR=C:\qt\4.3.1

 

转自:http://www.qtcn.org/bbs/simple/?t7708.html