控制檯手動編譯Qt5程序

轉自:http://www.cnblogs.com/csulennon/p/4479236.htmlhtml

在上一篇隨筆中已經搭建好了Qt5的的開發環境,而且經過Qt Creator自動構建了一個視窗程序。在這篇文章中咱們將手動編寫一個HelloWold程序,簡單瞭解一下Qt的構建過程。這裏咱們不會涉及到Qt代碼部分,所以能夠先不用理會代碼是怎麼回事,複製粘貼就行。app

首先編寫helloworld.cppui

複製代碼
#include <QPushButton>
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QPushButton btn("hello world");
    btn.resize(200,100);
    btn.show();
    return app.exec();
}
複製代碼


我將其放在D:\Workspace\qt\hello,你能夠放在任何你喜歡的目錄下,但最好不要包含中文目錄.spa

而後win+r 輸入cmd回車,進入控制檯,進入到源代碼目錄下3d

qmake –project

這時候會生成一個「目錄名.pro」的文件,我這裏生成的是hello.procode

image

打開這個文件,由於Qt5的qapplication在QtWidgets模塊裏,和Qt4不同,Qt4的qapplication在QtGui模塊裏,所以須要加上以下配置項:htm

QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

image

而後執行blog

qmake hello.pro

能夠看到已經生成了Makefile文件ip

image

接下來就是根據Makefile文件構建應用程序了,執行程序:ci

mingw32-make   【此時編譯器mingw32會自動在當前目錄下查找Makefile文件並根據Makefile文件內容編譯連接相應的文件】    

image

若是沒有報錯,說明編譯成功了!

進入release目錄下能夠看到兩個文件:hello.exe  helloworld.o

image

直接運行hello.exe就能夠看到效果了,一個可愛的200x100大小的巨型按鈕窗口出現了。

image

 

問題解決:

問題一:‘qmake’不是內部或外部命令,也不是可運行的程序或批處理文件。

這個問題很好解決,主要是由於環境變量沒有配置好。Win+R輸入SystemPropertiesAdvanced

image

image

在path後面追加兩條數據,並以英文分號「;」分隔。分別是

(1)D:\Qt\Qt5.4.0\5.4\mingw491_32\bin; 這個目錄是我Qt的安裝目錄,須要根據本身的安裝狀況設置,設置這個目錄主要是爲了使用qmake命令,也就是說你須要配置的目錄就是qmake.exe所在的目錄路徑。

(2)第二個是mingw32-make.exe的路徑,個人是在D:\Qt\Qt5.4.0\Tools\mingw491_32\bin;兩個目錄配置好以後,重新打開cmd窗口就會生效了。

問題二:mingw32-make執行錯誤

複製代碼
D:\Workspace\qt\hello>mingw32-make
mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory 'D:/Workspace/qt/hello'
g++ -c -pipe -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_NO_DEBUG -DQT_GUI
_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I. -I'.' -I'../../../Qt/Qt5.4.0/5.4/mingw491_32/include' -I'../../../Qt/Qt5.4.0/5.4
/mingw491_32/include/QtGui' -I'../../../Qt/Qt5.4.0/5.4/mingw491_32/include/QtCore' -I'release' -I'../../../Qt/Qt5.4.0/5.
4/mingw491_32/mkspecs/win32-g++' -o release/helloworld.o helloworld.cpp
helloworld.cpp:1:23: fatal error: QPushButton: No such file or directory
 #include <QPushButton>
                       ^
compilation terminated.
Makefile.Release:121: recipe for target 'release/helloworld.o' failed
mingw32-make[1]: *** [release/helloworld.o] Error 1
mingw32-make[1]: Leaving directory 'D:/Workspace/qt/hello'
makefile:34: recipe for target 'release' failed
mingw32-make: *** [release] Error 2
複製代碼

image

這個錯誤主要是Qt的版本引發的,Qt5的QApplication在QtWidgets模塊裏,Qt4的qapplication在QtGui模塊裏。

所以需在.pro文件中加入:

QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

這兩行便可。

總結:

總的流程其實很簡單:

(1)編寫源文件

(2)qmake –project

(3)修改*.pro

(4)qmake  *.pro

(5)mingw32-make

相關文章
相關標籤/搜索