Qt入門與提高:ks02-04 pro 檔案常用配置
版權宣告
---------------------------------------------------------------------------------------------------------------------
作者: 女兒叫老白
轉載請註明出處!
---------------------------------------------------------------------------------------------------------------------
引言
----------------------------------------------------------------------------------------------------------------------
前面章節我們通過一個exe的例子介紹了pro檔案的基本配置,今天我們來看一下在跨平臺開發中pro檔案的一些常用配置。
正文
----------------------------------------------------------------------------------------------------------------------
1, exe還是dll---TEMPLATE
我們開發一個程式時,要麼是exe程式、要麼是dll程式,這由啥來決定呢?首先來介紹一下TEMPLATE配置項。該配置項用來確定我們生成的程式是exe還是dll。
TEMPLATE = app # 表示本專案生成一個exe。
TEMPLATE = lib # 表示本專案生成一個dll。
TEMPLATE = subdirs # 表示本專案將掃描指定的子目錄集合並執行
# 相關操作,經常與SUBDIRS引數配合使用,
# 比如指定需要翻譯的子目錄列表時,可以用
# 該配置。
2, 用什麼開發語言呢---LANGUAGE
語法:LANGUAGE =C++
表示本專案用C++語言開發。
注意: C要大寫。
3, 生成的模組名稱---TARGET
語法:TARGET = xxx
本專案生成的程式的名字為xxx。
比如,如果WINDOWS上生成的是prog.exe或者prog.dll,在LINUX上生成的是libprog.so.1.0.0,都可以用:
TARGET= prog
4, debug還是release---CONFIG
語法:CONFIG += xxx xxx xxx(表示增加某些CONFIG配置項,中間用空格區分)
語法:CONFIG -= xxx xxx xxx(表示刪除某些CONFIG配置項)
release: 以release版本構建。如果也指定debug,最後一個生效。可以用+/-進行控制,如CONFIG -= release, CONFIG+=release
debug: 專案以debug模式構建。可以用+/-進行控制。
debug_and_release: 專案準備以debug和release兩種模式構建。
precompile_header:可以在專案中使用預編譯標頭檔案的支援。
warn_on:編譯器應該輸出儘可能多的警告。如果也指定了warn_off,最後一個生效。warn_off:編譯器應該輸出儘可能少的警告。
rtti:啟用RTTI支援。預設情況下,使用編譯器預設。關閉則用rtti_off。
stl:啟用STL支援。預設情況下,使用編譯器預設。關閉則用stl_off。
thread:啟用執行緒支援。當CONFIG包括qt時啟用,這是預設設定。
qt:表示需要連結qt的庫。一般使用Qt類庫時需要該配置項,如果是開發服務模組,一般會使用其他類庫或者自行編寫類庫,所以編寫服務模組時一般不用qt(寫成:CONFIG -= qt)。
c++11: 啟用c++11支援。如果編譯器不支援c++11這個選項,沒有影響。預設情況下,支援是禁用的。
c++14: 啟用c++14支援。如果編譯器不支援c++14這個選項,沒有影響。預設情況下,支援是禁用的。
5, 使用qt的哪些模組---QT
語法:QT += xxx xxx xxx (表示增加某些QT配置項,中間用空格區分)
語法:QT -= xxx xxx xxx (表示刪除某些QT配置項)
指定專案中使用Qt的模組。預設情況下,QT包含core和gui,以確保標準的GUI應用程式無需進一步的配置就可以構建。
如果想建立一個不包含Qt GUI模組的專案,可以使用“ -=”操作符。
下面一行將構建一個不帶gui的Qt專案:
QT -= gui # 僅僅使用core模組
如果要建立一個介面(widget),裡面用到XML及網路相關的類,那麼需要包含如下模組:
QT += widgets xml network
請注意:
如果您需要用到ui檔案,請務必配置QT+= widgets,否則編譯時將無法通過uic處理ui檔案(無法生成ui檔案對應的.h檔案),將導致編譯失敗。
6, 各種DIR | 各種PATH
DEPENDPATH:
指定檢視解決依賴關係的目錄列表,當包含檔案時使用:
DEPENDPATH += . forms include qrc sources
INCLUDEPATH:
指定編譯專案時應該被搜尋的#include目錄,比如:
INCLUDEPATH = $$(TRAINDEVHOME)/include
DESTDIR:
指定目標檔案的存放位置。
DESTDIR = ../../lib
MOC_DIR:
指定來自moc的所有中間檔案放置的目錄(含Q_OBJECT巨集的標頭檔案轉換成標準.h檔案的存放目錄)。比如:
MOC_DIR = $$(TRAINDEVHOME)/obj/moc
OBJECTS_DIR:
指定所有中間檔案.o(.obj)的存放目錄,比如:
OBJECTS_DIR = $$(TRAINDEVHOME)/obj/chapter02/ks02_04
RCC_DIR:
指定Qt資源編譯器輸出檔案的目錄(.qrc檔案轉換成qrc_*.h檔案的存放目錄),比如:
RCC_DIR =$$(TRAINDEVHOME)/obj/chapter02/ks02_04/resources
UI_DIR:
指定qt的uic命令轉換ui檔案得到的所有中間檔案放置的目錄(.ui檔案轉化成ui_*.h檔案的存放目錄),比如:
UI_DIR =$$(TRAINDEVHOME)/obj/chapter02/ks02_04/ui
7, FORMS:
指定專案使用的UI檔案。在編譯前被uic處理。所有的構建這些UI檔案所需的依賴、標頭檔案和原始檔都會自動被新增到專案中。
FORMS = mydlg.ui \
login.ui
8, HEADERS :
指定專案用到的h檔案,比如:
HEADERS = abc.pro \
myfile.h \
../../comdll/mycom.h \
$$(TRAINDEVHOME)/include/base.h
注:
*. 將pro檔案新增到HEADERS是為了方便,這樣就可以在VisualStudio工具中直接找到pro檔案,而無需到資源管理器查詢。
*. 可以用相對路徑的語法,比如:../../comdll/mycom.h
*. 可以使用環境變數,比如: $$(TRAINDEVHOME)/include/base.h
*. 使用”\”進行換行。
9, SOURCES:
專案用到的cpp檔案,語法、注意點同HEADERS。
10, RESOURCES:
專案用到的資原始檔 (qrc) 的名稱,比如:
RESOURCES += mdi.qrc
11, LIBS:
指定連結到專案中的庫列表。使用-l(小寫的L)和-L兩種語法。
-l,表示庫檔名,比如,下面的語句表示連結到庫檔案mycomm。
LIBS += -lmycomm
-L,表示庫檔案所在的路徑,比如,下面的語句表示庫檔案所在目錄為:/usr/local/myprogram/lib,連結的庫檔案為mycomm、fesp。
LIBS += -L/usr/local/myuprogram/lib \
-lmcomm \
-lfesp
12, TRANSLATIONS
指定包含使用者介面翻譯文字的翻譯(.ts)檔案列表,比如:
#xxxfortranslations.pro
TRANSLATIONS =translations/graphplatform_zh_CN.ts
該配置將被lupdate命令讀取(如下,手工執行該命令), 生成的ts檔案就儲存在TRANSLATIONS所指向的檔名。
lupdate xxxfortranslations.pro
13, SUBDIRS
同template=subdirs配合使用。
該配置指出本專案包含的子目錄,可以用來掃描生成翻譯檔案,或者級聯生成整個專案的Makefile。
SUBDIRS = \
esfc \
common \
phcore \
phwidget
如果pro包含上述內容,那麼對該pro執行qmake時,qt會自動進入SUBDIRS所包含的各個子目錄,分別執行qmake。
注:
----------------------------------------------------------------------------------------------------------------------
修改pro或pri檔案後,務必重新執行qmake或qmake –tp vc,
以便更新Makefile或者VisualStudio的專案檔案(.vcxproj)
結語
----------------------------------------------------------------------------------------------------------------------
今天,我們給大家介紹了pro檔案常用的一些配置,內容稍微有點多。如果我沒講明白,希望大家能反饋一下寶貴意見。