1. 程式人生 > >Qt入門與提高:ks02-04 pro 檔案常用配置

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檔案常用的一些配置,內容稍微有點多。如果我沒講明白,希望大家能反饋一下寶貴意見。