轉自: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
打開這個文件,由於Qt5的qapplication在QtWidgets模塊裏,和Qt4不同,Qt4的qapplication在QtGui模塊裏,所以須要加上以下配置項:htm
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
而後執行blog
qmake hello.pro
能夠看到已經生成了Makefile文件ip
接下來就是根據Makefile文件構建應用程序了,執行程序:ci
mingw32-make 【此時編譯器mingw32會自動在當前目錄下查找Makefile文件並根據Makefile文件內容編譯連接相應的文件】
若是沒有報錯,說明編譯成功了!
進入release目錄下能夠看到兩個文件:hello.exe helloworld.o
直接運行hello.exe就能夠看到效果了,一個可愛的200x100大小的巨型按鈕窗口出現了。
這個問題很好解決,主要是由於環境變量沒有配置好。Win+R輸入SystemPropertiesAdvanced:
在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窗口就會生效了。
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
這個錯誤主要是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