Qt Windows 命令行编译环境搭建

搭建这个环境主要是为了在学习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"进行程序编译,也可设置一个快捷键映射该指令

你可能感兴趣的:(Qt)