在命令行提示符窗口中编译运行qt程序

在命令行提示符窗口中编译运行qt程序

本博文主要内容

  • 编译过程中使用的几个重要的命令
  • 在编译运行过程中碰到的几个常见问题及其解决方法

一、环境及源码

QT版本:QT 5.6(自带QT Creater 4.0.3)
选择编译运行的quit.cpp文件内容如下:

#include 
#include 

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPushButton *button = new QPushButton("Quit");
    QObject::connect(button, SIGNAL(clicked()),
                     &app, SLOT(quit()));
    button->show();
    return app.exec();
}

二、命令编辑

打开qt的命令行提示符程序窗口

在命令行提示符窗口中编译运行qt程序_第1张图片

然后进入quit.cpp文件所在的目录下。
- 使用qmake –project命令生成工程文件(.pro文件);
- qmake xxx.pro命令生成Makefile文件(包括Makefile, Makefile.Debug和Makefile.Release)以及两个空的文件夹(debug和release);
- mingw32-make命令生成可执行.exe文件.(默认生成Debug或者Release下的可执行文件)

在命令行提示符窗口中编译运行qt程序_第2张图片

其他命令:
mingw32-make -f Makefile.Debug 生成相应的debug下的可执行文件
mingw32-make -f Makefile.Release 生成相应的release下的可执行文件

三、遇到的问题及对应的解决方法

1、使用mingw32-make命令时,无法生成可执行文件,显示QApplication:No such file or directory。

在命令行提示符窗口中编译运行qt程序_第3张图片

解决方法
修改工程文件即quit.pro文件,添加划线部分内容:

在命令行提示符窗口中编译运行qt程序_第4张图片

若还是无法编译成功再检查系统变量的设置:
在qt4的版本中,使用QT进行命令行编译,必须要进行系统环境变量配置,否则无法使用相应的qmake,make等命令,并且要链接到编译程序时所需要的头文件和库文件。但是在qt5.6版本(qt5的其他版本没有测试过)中,命令行提示符程序启动后会自动调用qt安装目录下的批处理文件qtenv2.bat设置环境变量,包括qmake和mingw32-make命令的目录,就无需自己再设置环境变量。

在path变量中添加两个路径
D:\Qt\Qt5.6.2\5.6\mingw49_32\bin;
D:\Qt\Qt5.6.2\Tools\mingw492_32\bin
新建一个系统变量QMAKESPEC,变量值为win32-g++(目前未发现该系统变量的作用,不添加的话也不影响程序的运行)

2、直接点击可执行的.exe文件无法执行,错误显示无法启动此程序,因为计算机中丢失Qt5Core.dll。

在命令行提示符窗口中编译运行qt程序_第5张图片

解决方法
出现这个问题是因为运行程序无法找到对应的dll文件。一种解决方法是到qt的安装目录下找到相应的dll文件并复制到当前项目的release(或者debug)文件夹中。另一种是按上述问题1的解决方法设置系统环境变量。

3、系统环境变量设置好后点击.exe可执行文件显示错误:无法定位程序输入点xxx于动态链接库上。

在命令行提示符窗口中编译运行qt程序_第6张图片

解决方法
发生该错误的可能原因是之前安装过类似的编译器(mingW编译器)并且在系统变量path中已经有它的路径存在,如下
在命令行提示符窗口中编译运行qt程序_第7张图片
只需要删除该冲突的编译器在系统变量path中的路径值就可以了。

四、编译运行结果

1、在qt的命令行提示符窗口中编译成功并运行的结果

在命令行提示符窗口中编译运行qt程序_第8张图片

2、直接在windows的命令行提示符程序窗口中运行(要在系统的命令提示符程序窗口中运行必须要设置上述环境变量,否则出现上述的第二个问题)

在命令行提示符窗口中编译运行qt程序_第9张图片

参考:Qt怎样采用命令行提示符程序进行程序编译

你可能感兴趣的:(qt学习)