【必知必会】pro文件及常用配置
前言
筆者在工作中了解到,有部分同學(xué)對(duì)Qt的項(xiàng)目文件,即.pro文件的基本配置編寫(xiě)不是很了解。作為一名Qt工程師,.pro文件的編寫(xiě)也是必會(huì)的技能,本文對(duì)此進(jìn)行一個(gè)講解,并將相關(guān)資料做一個(gè)匯總。
.pro文件的介紹
.pro文件是Qt的項(xiàng)目文件,Qt允許我們直接編輯,不像Visual Studio基本上所有項(xiàng)目選項(xiàng)都需要界面來(lái)配置。
Qt使用其自帶的qmake.exe來(lái)解析.pro文件。.pro文件有自己的語(yǔ)法規(guī)則,所以學(xué)習(xí)起來(lái)需要一定的成本。目前我們只需要學(xué)習(xí)編寫(xiě)最基本的配置即可,根據(jù)二八定律,80%的情況下,我們只能用到20%的配置方法,剩余20%的情況等到我們熟悉了.pro文件以后,再去查詢(xún)解決即可。二八定律學(xué)習(xí)法一定要牢牢掌握哦!
一個(gè).pro文件的例子
打開(kāi)Qt,新建一個(gè)Qt Widgets Application。筆者使用的Qt Creator版本是Qt Creator 4.0.2。
下面是.pro文件中的內(nèi)容
下面依次解釋上面的代碼各行的含義
-
QT += core gui
指定當(dāng)前項(xiàng)目使用的Qt模塊,Qt會(huì)自動(dòng)將相關(guān)模塊的頭文件、庫(kù)文件加入到項(xiàng)目配置中。只有在.pro中指定了需要使用的庫(kù),才能在項(xiàng)目中使用相關(guān)的功能。
比如使用網(wǎng)絡(luò)時(shí):QT += network;使用xml時(shí):QT += xml,等等。
新問(wèn)題:
如何知道某個(gè)Qt類(lèi)在哪個(gè)庫(kù)呢。在Qt手冊(cè)中找到對(duì)應(yīng)的類(lèi),有類(lèi)所在庫(kù)的信息,如下圖:
-
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
此行的含義為:當(dāng)前Qt的版本大于Qt4的話(huà),即Qt5的話(huà),就加入widgets模塊。可見(jiàn)widgets模塊可能是Qt5中才引入的。 -
TARGET = untitled13
目標(biāo)程序名稱(chēng)。就是生成出來(lái)的目標(biāo)文件的文件名前綴,不包含擴(kuò)展名,擴(kuò)展名由項(xiàng)目類(lèi)型決定。這里指定了untitled13,如果項(xiàng)目類(lèi)型是應(yīng)用程序,則會(huì)生成untitled13.exe;如果項(xiàng)目類(lèi)型是動(dòng)態(tài)庫(kù),則會(huì)生成untiled13.dll文件。 -
TEMPLATE = app
指定項(xiàng)目模板類(lèi)型,也就是項(xiàng)目類(lèi)型。可以指定app(應(yīng)用程序)、lib(庫(kù)),除了這些還有其他類(lèi)型,Qt文檔的qmake manual部分有詳細(xì)描述。 -
SOURCES += main.cpp mainwindow.cpp
指定源代碼文件列表 -
HEADERS += mainwindow.h
指定頭文件列表 -
FORMS += mainwindow.ui
指定ui設(shè)計(jì)文件列表
其他常用配置項(xiàng)
-
DESTDIR = $$PWD/
此行代碼用于指定目標(biāo)文件的保存目錄。
DESTDIR是英文Destination Directory的縮寫(xiě),即目的文件夾。
$$PWD是一個(gè)保存當(dāng)前目錄路徑的變量。 -
LIBS += -L$$PWD/
此行代碼同Visual Studio中的“附加庫(kù)目錄”功能,用于添加庫(kù)文件搜索路徑。 -
LIBS += -lmylib
此行代碼同Visual Studio中的“附加依賴(lài)庫(kù)”功能,用于添加需要鏈接的庫(kù)文件。可以和上面的添加庫(kù)文件搜索路徑寫(xiě)在一起,比如 LIBS += -L$$PWD -lmylib。 -
CONFIG += staticlib
結(jié)合TEMPLATE = lib使用,指定生成靜態(tài)庫(kù)。 -
CONFIG += dll
結(jié)合TEMPLATE = lib使用,指定生成動(dòng)態(tài)庫(kù)。 -
INCLUDEPATH += $$PWD
用于添加頭文件的包含目錄。和Visual Studio中的“附加包含目錄”功能一致。 -
DEFINES += MY_MACRO
用于添加全局需要使用的宏定義。和Visual Studio中的“預(yù)處理器定義”功能一致。 -
message($$PWD)
message是.pro中的內(nèi)置函數(shù),用于打印消息或變量,一般用于調(diào)試變量或步驟是否正確。
輸出的消息會(huì)在Qt Creator底部的“概要信息”中打印。 -
配置判斷
- include(sub_module.pri)
這個(gè)非常重要。.pri是子模塊配置文件,編寫(xiě)方式和.pro基本一樣。不一樣的地方就在于,它畢竟是子模塊配置文件,只需要寫(xiě)子模塊的配置信息即可,不需要寫(xiě)諸如 TEMPLATE = app等這種應(yīng)該在pro文件中編寫(xiě)的配置項(xiàng)。
有的同學(xué)會(huì)問(wèn),.pri文件在哪創(chuàng)建?界面上怎么找不到?這個(gè)確實(shí)筆者也一直都沒(méi)有找到,需要自己新建一個(gè)文件,將文件后綴改為.pri,最后在.pro文件中使用include包含進(jìn)來(lái)。
.pri的典型用法這里舉一例:用來(lái)引入第三方庫(kù)。一般第三方庫(kù)需要提供頭文件、庫(kù)文件。想要引入到Qt項(xiàng)目中,編寫(xiě)一個(gè).pri文件就比較簡(jiǎn)單,需要用到的項(xiàng)目直接include這個(gè).pri文件即可。相對(duì)于Visual Studio需要到多個(gè)界面配置第三方庫(kù),簡(jiǎn)單了很多。一個(gè)引入庫(kù)的pri子模塊文件內(nèi)容如下圖所示:
其他說(shuō)明項(xiàng)
- 經(jīng)測(cè)試,構(gòu)建一次項(xiàng)目.pro文件可能會(huì)被執(zhí)行多次。所以不能認(rèn)為.pro構(gòu)建一次,只執(zhí)行一次,和我們想的不太一樣,需要注意。
參考資料
當(dāng)然是官方手冊(cè)了,在Qt Assistant中,切換到“索引”,輸入“qmake manual”即可找到。
結(jié)語(yǔ)
學(xué)會(huì)使用.pro文件真的很重要,一定要掌握最基本的配置。
后續(xù)如果有其他比較重要的配置項(xiàng),會(huì)更新說(shuō)明,敬請(qǐng)關(guān)注。
本文首發(fā)自公眾號(hào)“Qt未來(lái)工程師”,歡迎關(guān)注。
總結(jié)
以上是生活随笔為你收集整理的【必知必会】pro文件及常用配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 铠侠发布全球最小PCIe SSD:1TB
- 下一篇: 记录今天写的几个正则,数字范围的校验