使用命令行编译Qt程序
下载Qt
在Qt的官网上必须得登陆才能下载,这让我倍感烦躁,于是百度下找到这个链接http://download.qt.io/archive/qt/进入无需登陆即可下载,还能选择一些历史版本,因为我装了VS2015,所以我选择支持MSVC2015编译套件
的Qt:
上面两个都要安装,一个用来生成32位程序,另一个用来生成64位程序
从命令行编译Qt程序
新建一个文本文件,将其后缀改成.cpp,然后将下面代码写入其中:
#include<QApplication> #include<QLabel> int main(int argc, char*argv[]) { QApplication app(argc,argv); QLabel * label = new QLabel("Hello Qt!"); label->show(); return app.exec(); }
在两个版本的Qt安装完成后,在开始菜单可以找到Qt提供的命令行工具:
一个32位的,用来生成32位的Qt程序;一个64位的,用来生成64位的Qt程序;这里我选择32位的Qt命令行工具:
这里-o参数指明了生成工程文件的名称,如果不使用-o参数指明,默认名称为当前文件夹的名称,执行qmake -project
后将生成一个后缀为.pro的工程文件,然后在执行qmake 工程文件名称.pro 命令后就生成了Makefile文件,
安装VS2015后也会有命令行工具:
因为我要生成的是32位程序,所以要使用生成32位程序的VS命令行工具来编译源码:
找不到文件,这是因为从Qt4到Qt5一些基础类模块发生了变化,Qt也给出了解决方案:
https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5
我们在工程文件中直接加入一行"QT+=widgets",或者在生成工程文件时在qmake命令后面加上这行也行:
然后在用VS的命令行工具执行nmake Debug Release同时编译调试版和发布版程序:
注意:
-
不要在Qt的命令行中执行nmake命令,编译时会有下面奇怪的错误:
-
不要使用生成64位程序的VS命令行工具去编译32位Qt命令行生成的Makefile,否则链接时会报错:
也不要用生成32位程序的VS命令行工具去编译64位Qt命令行生成的Makefile,否则链接时会报:
模块计算机类型“X64”与目标计算机类型“x86”冲突错误执行nmake命令后,release和debug文件夹中会有可执行文件:
双击即可运行如果运行时提示缺失Qtxxxxx.dll则需要把Qt安装目录下的bin文件夹路径添加到系统环境变量PATH中即可
我这里安装了32位和64位两个版本的qt,如果程序运行时报:
一般32位程序加载64位的依赖库,或者64位程序加载32位的依赖库时会报错;Qt的依赖库在其安装目录下的bin
文件夹下,如果当前是32位程序报这个错误时,只需要把32位Qt安装目录下的bin文件夹路径提最前面就行,
如果当前是64位程序报这个错误时,只需要把64位Qt安装目录下的bin文件夹路径提最前面就可以;