因應老師想轉換目標
所以又開始尋找新的論文開始研讀
每天必做的事情
讀英文一小時還有程式概念持續看
不然會少了敏銳性
最近方向在於Stereo matching
但是Qt 依然要繼續學習的
之前那本書前面講了很多有關android的概念
但因為我對手機app實在沒什麼興趣
所以只有看過而已
這篇要說的是
建置專案後,Qt裡的pro 檔案
為了多點參考
所以我用了這篇的當作例子
開始囉~
專案檔案(.pro)包含了使用qmake建立應用、函數庫、外掛程式的所有資訊
大部分的情況下,只需要在專案檔案中使用一系列的宣告來指定資源
圖裡可以看到,test裡總共有4個檔案,其實還有一些檔案,在這裡是看不到的
例如使用者專案設定的pro.user(與pro檔案同目錄),編譯中產生的makefile檔案(在建置所在目錄中)
.pro檔案:
第七行
QT += core gui
指名我們的專案需要Qt 和 QtCore 兩個模組,QT 是qmake支援的內建變數
在專案檔案中,變數一般用來儲存一個字串清單。
第九行
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
後面這裡指名我們要QtWidgets這個模組
前半部分則是 greaterThan是qmake所支援的內建函數,QT_MAJOR_VERSON則是qmke的內建變數。而這行的意思是說Qt的主版本大於4時,替專案增加QtWidgets這個模組。
在Qt 5 之前,沒有獨立的QtWidgets模組,是包含在QtGui模組中
現在知道:
QT 就是用來宣告Qt函數庫的。預設中包含了core 和 gui。
想要其他模組的宣告方式就是
QT += 模組縮寫
可以透過QT變數增加的模組套件有:widgets、network、xml、quick、multimedia、webkit等
書裡有提到一個特殊的用法
就是
QT -= 模組縮寫
這樣的語法,以便開發者能夠去掉專案不要的模組
第11行
TARGET = test
TARGET變數用來設定專案的目的檔案名稱
如果不設定,會被自動設定為跟專案檔案一樣的名稱
這可以用在
假設想給Debug 跟 Release 版本取不同的名字(這樣比較好區分)
可以使用這個變數
像是這樣:
CONFIG(debug, debug|release)
{
TARGET = test_d
message("debug build")
}
else
{
TARGET= test
message("release build")
}
第12行
TEMPLATE = appTEMPLATE變數用來設置專案的建置類型
如果沒有設定這個變數,qmake會預設按應用(就是目前這行的設定)
第14行
SOURCES += main.cpp\
mainwindow.cpp
SOURCES變數用來設定專案都包含哪些原始檔案,多個原始檔案之間可以用空格隔開
如果不想變成一整排字串造成閱讀上的困難的話
可以用反斜線 " \ " 折行
SOURCE += main.cpp \
mainwindow.cpp \
widget.cpp
還有另外一種撰寫方式,就是利用 " += "運算子(很多變數都支援,如前面看到的QT變數)
QT += gui
QT += core
QT += quick
如果不知道變數是否包含有預設值,比較安全的作法是採用 "+="來進行第17行
HEADERS += mainwindow.h
HEADERS 變數用來設定專案包含哪些標頭檔,多個標頭檔之間可以用空格隔開,基本用法跟SOURCES一樣
第21行
INCLUDEPATH += C:\opencv\build\include C:\opencv\build\include\opencv2在開發專案時,經常會用到其他函數庫的標頭檔,或是我們自己的類別庫
這時候就需要在Qt專案檔案中指定類別庫的標頭檔目錄
就是使用INCLUDEPATH
變數用法跟SOURCES類似,可以在一行宣告所有標頭檔路徑,也可以折行,也可以使用"+="
第25行
CONFIG(release,debug|release)
{
LIBS += C:\opencv\build\x64\vc10\lib\opencv_core2410.lib LIBS += C:\opencv\build\x64\vc10\lib\opencv_highgui2410.lib LIBS += C:\opencv\build\x64\vc10\lib\opencv_imgproc2410.lib LIBS += C:\opencv\build\x64\vc10\lib\opencv_objdetect2410.lib LIBS += C:\opencv\build\x64\vc10\lib\opencv_contrib2410.lib
這裡就是指定函數庫與函數庫檔案路徑
OpenCV的lib檔案有分debug跟release版本
這裡我是使用release版本 所以加上了CONFIG設定資訊
如果要使用debug版本
要改成這樣
CONFIG(debug,debug|release)這裡是書沒提到的
接下來是講書裡提到的,但是我目前沒有用到
巨集的定義:
在Qt專案中,使用DEFINES變數來定義
用法就跟LIB類似
EX:
DEFINES += LIVE_TEST
DEFINES += DEBUG_CONNECTION
因為qmake會給DEFINES變數設定一些預設值,因此建議在使用DEFINES變數時,只用 " += "設定
設定資訊:
CONFIG變數用來設定專案的資訊和編譯選項
qmake內建了很多選項供CONFIG變數使用
- release,告訴qmake建置Release版本
- debug,告訴qmake建置Debug版本
- debug_and_release,告訴qmake建置Debug和Release版本。(release、debug、debug_and_release哪個是最後一個設定,就使用哪個)
- warn_on,告訴編譯器盡可能詳盡的警告資訊,強烈建議開啟
- warn_off,告訴編譯器別警告資訊
#example 1
CONFIG += qt warn_on release
#example 2
CONFIG -=qt
目前就看到這裡了C++的深度我還挖得不夠深
所以還持續的努力中
也希望大家多推薦Qt的書給我看QQ
沒有留言:
張貼留言