搭建这个环境主要是为了在学习Qt开发过程中做代码练习使用
前提条件:
机器上已经可以实现在QtCreater上开发执行程序
如果没有,可以参考这个链接 http://blog.csdn.net/suxw80then/article/details/8707862
环境搭建:
就是将相关工具的bin目录添加到系统环境中,以便在命令行中使用
需要添加的bin目录如下
C:\Qt\Qt5.3.0\5.3\mingw482_32\bin
C:\Qt\Qt5.3.0\Tools\mingw482_32\bin
C:\Qt\Qt5.3.0\Tools\QtCreator\bin
路径添加完毕后需要重启系统
使用过程:
工程目录D;\Qt\hello下有hello.cpp文件
1· 进入系统命令行,cd到工程目录下
2· 输入 qmake -project,生成工程文件hello.pro(C:\Qt\Qt5.3.0\5.3\mingw482_32\bin下的qmake可执行文件)
3· 输入 qmake -hello.pro,生成工程对应的makefile文件
4· 输入 mingw32-make(C:\Qt\Qt5.3.0\Tools\mingw482_32\bin下的make可执行文件)
在当前目录的release目录下生成可执行文件hello.exe
5. 输入release\hello.exe,即可执行程序,查看效果
遇到的问题及解决办法:
1· 编译时如果找不到头文件 QLabel
这个是由于编译时Qt库头文件的路径没有包含进来,有两个解决办法
一个是在工程文件hello.pro中手动添加Qt库头文件的路径,填写内容如下
INCLUDEPATH += "C:\\Qt\Qt5.3.0\\5.3\\mingw482_32\\include"
另一个是在系统环境中添加
2· 连接时报未定义错误
原因是连接时没有连接到相应的库文件
解决办法是在工程文件hello.pro中手动添加需要用到的库
例如:QT += widgets
这个依据具体的源码到帮助文档中可以查到
例如源文件中用到了QLabel,就在帮助文档中搜索它,相关介绍内容的最前面会有如下内容
Header: #include
qmake: QT += widgets //工程中如果使用该类,工程文件中应添加这段代码,表示qt编译时需要连接的库
Inherits: QFrame. //该类的父类
以下是编译时报的错误信息
release/hello.o:hello.cpp:(.text+0x22): undefined reference to `_imp___ZN12QApplicationC1ERiPPci'
release/hello.o:hello.cpp:(.text+0x69): undefined reference to `_imp___ZN6QLabelC1ERK7QStringP7QWidget6QFlagsIN2Qt10WindowTypeEE'
release/hello.o:hello.cpp:(.text+0x96): undefined reference to `_imp___ZN7QWidget4showEv'
release/hello.o:hello.cpp:(.text+0x9c): undefined reference to `_imp___ZN12QApplication4execEv'
release/hello.o:hello.cpp:(.text+0xa8): undefined reference to `_imp___ZN12QApplicationD1Ev'
release/hello.o:hello.cpp:(.text+0xfe): undefined reference to `_imp___ZN12QApplicationD1Ev'
相关文件内容:
======================================================================
hello.pro内容如下
######################################################################
# Automatically generated by qmake (3.0) ?? ??? 13 21:55:12 2014
######################################################################
TEMPLATE = app
TARGET = hello
INCLUDEPATH += .
#suxw manully add
INCLUDEPATH += "C:\\Qt\Qt5.3.0\\5.3\\mingw482_32\\include"
QT += widgets
#suxw
# Input
SOURCES += hello.cpp
======================================================================
======================================================================
hello.cpp源码如下
#include
#include
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello Qt");
label->show();
return app.exec();
}
======================================================================
甜品:
如果使用vim编辑开发的话,可以在vim内执行以上命令
代码编辑完成后直接输入"!mingw32-make"进行程序编译,也可设置一个快捷键映射该指令