QT中PRO文件寫法的詳細介紹


學習Qt時,發現有些知識看了不經常用就忘了,以下是書本上寫的一些關於qmake的相關知識,自己看后,打算把一些經常用到的記下來,整理整理。

 

Qt程序一般使用Qt提供的qmake工具來編譯。

qmake工具可以使用與平台無關的.pro文件生成與平台相關的makefile。該工具包含了調用Qt內置代碼生成工具(moc,uic,rcc)的必要邏輯規則。

 

可以在命令行下,輸入qmake -project來生成平台無關的pro文件。

工程文件pro主要分為三種:app(單獨的應用程序),lib(靜態和動態庫),subdirs(遞歸編譯)。工程類型可以使用TEMPLATE變量來指定。

如: TEMPLATE = app(默認不指定的情況下是app工程)

 

對於app工程或者lib工程,有以下這些經常使用的變量:

HEADERS:指定C++頭文件

SOURCES:指定C++實現文件

FORMS:指定需要uic處理的ui文件

RESOURCES:指定需要rcc處理的qrc文件

DEFINES:指定預定義預處理器符號

INCLUDEPATH:指定C++編譯器搜索頭文件路徑

LIBS:指定工程要鏈接的庫

CONFIG:指定工程配置和編譯參數

QT:指定工程所要使用的Qt模塊

VERSION:指定目標庫版本號

TARGET:指定可執行文件或庫的基本文件名,默認為當前目錄名

DESTDIR:指定可執行文件放置的目錄

DLLDESTDIR:指定目標庫文件放置的目錄

 

 

CONFIG:指定工程配置和編譯參數

以下對CONFIG變量做主要介紹:

debug:編譯有調試信息的可執行文件或則庫

release:編譯不具有調試信息可執行文件或者庫(如果同時指定debug release時,只有debug有效)

warn_off:關閉大量警告,默認是打開的

qt:指應用程序使用Qt

dll:動態編譯庫

staticlib:靜態編譯庫

plugin:編譯一個插件

console:應用程序需要寫控制台

當我們寫CONFIG變量時,可以使用

如:CONFIG = qt release warn_off

或者CONFIG = qt

      CONFIG += release

      CONFIG += warn_off

當想要移除某個設置時:CONFIG -= warn_off

 

 

在pro文件里,可以使

 

{varName}來訪問自己定義的變量,如

 

MyVersion = 1.2

FILE = 1.cpp

TARGET = improve$${MyVersion}

SOURCES = $$FILE

 

pro文件里,訪問環境變量的用法是:$(varName)

pro文件里,訪問Qt配置參數的用法:$$[varName]

 

在不同的編譯平台上編譯時,需要設定條件。如:

win32{

 SOURCES += 1.cpp

}else{

 SOURCES += 2.cpp

}

或者

win32:SOURCES += 3.cpp

 

 

 

在QT中,有一個工具qmake可以生成一個makefile文件,它是由.pro文件生成而來的,.pro文件的寫法如下:


1. 注釋
從“#”開始,到這一行結束。

2.模板變量告訴qmake為這個應用程序生成哪種makefile。下面是可供使用的選擇:
TEMPLATE = app
A> app -建立一個應用程序的makefile。這是默認值,所以如果模板沒有被指定,這個將被使用。
B> lib - 建立一個庫的makefile。
C> vcapp - 建立一個應用程序的VisualStudio項目文件。
D> vclib - 建立一個庫的VisualStudio項目文件。
E> subdirs -這是一個特殊的模板,它可以創建一個能夠進入特定目錄並且為一個項目文件生成makefile並且為它調用make的makefile。


#指定生成的應用程序放置的目錄
DESTDIR += ../bin

#指定生成的應用程序名
TARGET = pksystem

#配置信息
CONFIG用來告訴qmake關於應用程序的配置信息。

    CONFIG+= qt warn_on release

在這里使用“+=”,是因為我們添加我們的配置選項到任何一個已經存在中。這樣做比使用“=”那樣替換已經指定的所有選項是更安全的。
A> qt部分告訴qmake這個應用程序是使用Qt來連編的。這也就是說qmake在連接和為編譯添加所需的包含路徑的時候會考慮到Qt庫的。
B> warn_on部分告訴qmake要把編譯器設置為輸出警告信息的。
C> release部分告訴qmake應用程序必須被連編為一個發布的應用程序。在開發過程中,程序員也可以使用debug來替換release


#指定uic命令將.ui文件轉化成ui_*.h文件的存放的目錄
UI_DIR += forms

#指定rcc命令將.qrc文件轉換成qrc_*.h文件的存放目錄
RCC_DIR += ../tmp

#指定moc命令將含Q_OBJECT的頭文件轉換成標准.h文件的存放目錄
MOC_DIR += ../tmp

#指定目標文件(obj)的存放目錄
OBJECTS_DIR += ../tmp

#程序編譯時依賴的相關路徑
DEPENDPATH += . forms include qrc sources

#頭文件包含路徑
INCLUDEPATH += .

#qmake時產生的信息,【

 

(PATH)讀取環境變量PATH】
#message($$(PATH))

 

#源文件編碼方式
CODECFORSRC = GBK

#工程中包含的頭文件
HEADERS += include/painter.h
#工程中包含的.ui設計文件
FORMS += forms/painter.ui
#工程中包含的源文件
SOURCES += sources/main.cpp sources/painter.cpp
#工程中包含的資源文件
RESOURCES += qrc/painter.qrc

 

LIBS += -L folderPath  //引入的lib文件的路徑  -L:引入路徑

Release:LIBS += -L folderPath // release 版引入的lib文件路徑

Debug:LIBS += -L folderPath // Debug 版引入的lib 文件路徑

DEFINES += XX_XX_XXX  //定義編譯選項,在.h文件中就可以使用 :#ifdefine xx_xx_xxx

RC_FILE = xxx.icns

7. 平台相關性處理
我們在這里需要做的是根據qmake所運行的平台來使用相應的作用域來進行處理。為Windows平台添加的依賴平台的文件的簡單的作用域看起來就像這樣:

win32 {
SOURCES += hello_win.cpp
}
====================================================================================================================
當你已經創建好你的項目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的項目文件那里然后輸入:

Makefile可以像這樣由“.pro”文件生成:

    qmake -oMakefile hello.pro

對於VisualStudio的用戶,qmake也可以生成“.dsp”文件,例如:

    qmake -tvcapp -o hello.dsp hello.pro

 

參考鏈接:

1、Pro文件變量詳細說明

2、QT中PRO文件寫法的詳細介紹,很有用,很重要!

3、Qt Creator 配置第三方庫和頭文件

4、QtCreator的中如何使用第三方依賴庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM