版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Qt的pro工程文件語法學(xué)習(xí)Qt的pro工程文件語法學(xué)習(xí)PAGE6Qt的pro工程文件語法學(xué)習(xí)Qt的.pro工程文件語法學(xué)習(xí)標(biāo)簽:proqmake語法2016-01-15 12:25171人閱讀評論(0)收藏舉報分類:Qt5(6)版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。我們編寫Qt應(yīng)用程序時,不管使用Qt Creator還是VS或者Eclipse,不管是Qt Widgets還是Qt Quick,總會發(fā)現(xiàn)有.pro文件,我們稱.pro文件為Qt的工程管理文件,它存在的目的是列舉工程中包含的源文件。類似于makefile,一個工程中可以包含一個或多個.pro文件。因此對于使用Qt的開發(fā)
2、人員來說,熟悉.pro工程文件的語法,懂得閱讀和修改.pro文件,將有利于對項目工程的文件組織和管理。qmake、.pro文件、makefile文件的關(guān)系簡單來說就是:qmake工具使用了與平臺無關(guān)的.pro文件生成與平臺相關(guān)的makefile文件。所以雖然本文標(biāo)題為.pro文件語法學(xué)習(xí),實際上應(yīng)該是qmake的語法學(xué)習(xí),但是因為IDE把qmake隱藏起來了,我們接觸地更多的是.pro文件,因此還是使用這樣的標(biāo)題。=TARGET變量 & TEMPLATE變量 & CONFIG變量:首先我們需要知道工程文件主要分為三種:app(單獨的應(yīng)用程序)、lib(靜態(tài)或動態(tài)庫)和subdirs(遞歸編譯)
3、。工程文件的類型可以使用TEMPLATE變量來指定。TARGET是用來定義應(yīng)用程序的名字的,而程序的擴展名則由TEMPLATE來定義。例如:TARGET = hello,TEMPLATE = app,則在Linux下會生成hello(無后綴的ELF可執(zhí)行文件),對應(yīng)的在Windows下會生成。TEMPLATE和CONFIG共同定義了目標(biāo)類型,以下是幾種常見情況:TEMPLATE = app,生成標(biāo)準(zhǔn)程序(注意如果沒有TEMPLATE這一項,那么默認工程就是app)。TEMPLATE = subdirs,子項目工程模板,可以用它來創(chuàng)建一個能夠進入特定目錄并且編譯子目錄里的目標(biāo)文件。此時除了TEM
4、PLATE = subdirs,還需要指定SUBDIRS變量,在每個子目錄中,qmake會搜尋以目錄命名的.pro文件,并且會編譯該工程。TEMPLATE = lib,生成庫文件,若不指定CONFIG變量,則編譯為共享庫;若CONFIG += staticlib,則編譯為靜態(tài)庫;若CONFIG += plugin,則編譯為插件(插件總是動態(tài)庫)。對于app或者lib工程,以下是較常使用的一些變量:TARGET變量:指定可執(zhí)行文件或庫的基本文件名,其中不包含任何的擴展、前綴或版本號。(默認的是當(dāng)前的目錄名)CONFIG變量:指定各種用于工程配置和編譯的參數(shù)HEADERS變量:指定工程的C+頭文件
5、(.h)SOURCES變量:指定工程的C+實現(xiàn)文件(.cpp)FORMS變量:指定需要uic處理的由Qt設(shè)計師生成的.ui文件RESOURCES變量:指定需要rcc處理的.qrc文件(資源文件)LEXSOURCES變量:指定工程的lex源文件(.l)YACCSOURCES變量:指定工程中的yacc源文件(.y)DEFINES變量:指定預(yù)定義的C+預(yù)處理器符號INCLUDEPATH變量:指定C+編譯器搜索全局頭文件的路徑LIBS變量:指定工程要鏈接的庫。庫既可以通過絕對路徑指定,也可以使用源自Unix的-L和-l標(biāo)識符來指定(例如:-L/usr/local/lib和-ldb_cxx)QT變量:指
6、定工程所要使用的Qt模塊(默認的是core gui,對應(yīng)于QtCore和QtGui模塊)VERSION變量:指定目標(biāo)庫的版本號DESTDIR變量:指定生成的可執(zhí)行文件放置的目錄。(默認值是平臺相關(guān)的,例如在Linux上,值當(dāng)前目錄;在Windows上,則是指debug或release子目錄)DLLDESTDIR變量:指定目標(biāo)庫文件放置的目錄(默認與DESTDIR相同)OBJECTS_DIR變量:指定目標(biāo)文件(.o文件)的存放目錄.pro文件中的注釋:注釋以井號(#)開頭,在行尾處結(jié)束。.pro文件中的一個條目的語法通常具有如下形式:variable = values11values是字符串的列
7、表,例如:CONFIG = qt release warn_off,是指將列表 “qt”, “release”, “warn_off” 賦給CONFIG變量,注意!它會覆蓋CONFIG變量以前設(shè)置的各個值。因此我們通常用 += 操作符來擴展變量的值。如:CONFIG = qtCONFIG += releaseCONFIG += warn_off123123同樣,我們也可以用 -= 操作符從當(dāng)前的變量中移除任意的指定值。如:CONFIG = qt release warn_offCONFIG -= qt1212會使CONFIG變量的值變成 “release”, “warn_off”。另外還有=
8、操作符和 = 操作符。= 操作符在一個變量上添加一個值,但要求被添加的值不在變量的列表上,否則將不做任何事情。例如:SOURCE *= 11這一行將把文件添加到工程中,只有當(dāng)它還沒有被添加的情況下才會添加。最后,= 操作符使用指定的值替換符合正則表達式的值,這是sed的語法。例如:SOURCES = s/.cppb/.cxx/11使用.cxx替換SOURCES變量中所有.cpp文件的擴展名。除了使用qmake定義的標(biāo)準(zhǔn)變量外,我們也可以設(shè)置任意變量和值,并且可以使用$varName 或者$varName 語法引用它。例如:MY_VERSION = TARGET = Hello_$MY_VERS
9、ION1212使用$PWD 可以獲取當(dāng)前文件所在的目錄路徑。使用內(nèi)置函數(shù)$lower() 可以把字符串轉(zhuǎn)換為小寫。而內(nèi)置函數(shù)$system() 允許我們從外部應(yīng)用程序中產(chǎn)生字符串,例如想要確認當(dāng)前的UNIX版本,可以這樣寫:OS_VERSION = $system(uname -r)11然后,可以在條件中使用結(jié)果變量,并與contains()合用:contains(OS_VERSION, SunOS): SOURCES += 11有時候可能需要在.pro文件中指定包含空格的文件名。在這種情況下,只需要簡單地把文件名用引號括起來即可。當(dāng)在不同平臺上編譯工程時,可能有必要基于平臺指定不同的文件或者
10、不同的參數(shù)。qmake的條件判斷語法是:condition then-case else else-case1234512345condition部分可以是平臺名字(例如:win32、unix或者macx),或者更復(fù)雜的斷言。then-case和else-case部分使用標(biāo)準(zhǔn)語法為變量賦值。例如:win32 SOURCES += else SOURCES += 1234512345else分支是可選的。為了方便,當(dāng)then-case部分僅有一條變量賦值,而且在沒有else-case分支時,qmake也支持單行形式的語法。例如:macx: SOURCES += 11如果有幾個工程文件需要共享相同的項,則可以把相同的項提取到單獨的文件中,在各自的.pro文件中使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專題02化學(xué)實驗基本技能-2023年高考化學(xué)一輪復(fù)習(xí)小題多維練(新高考專用)
- 夢想作文演講稿400字(8篇內(nèi)容范文)
- 2024年腹部外科手術(shù)器械項目成效分析報告
- 2024年新形勢下白酒二批協(xié)議
- 2023年泌尿系統(tǒng)感染用藥項目成效分析報告
- 2023年油基型密封膠項目評價分析報告
- 幼兒園中班總結(jié)報告?zhèn)€人(5篇)
- 2024年攜手共進:餐飲業(yè)合作伙伴協(xié)議
- 2024年攪拌站工程用混凝土及砂漿采購合同
- 2024年工程機械租賃全面協(xié)議
- 特種設(shè)備安全總監(jiān)崗位職責(zé)
- 學(xué)習(xí)心理完整版本
- (高清版)JTG 3363-2019 公路橋涵地基與基礎(chǔ)設(shè)計規(guī)范
- 部編版六年級年冊《第五單元習(xí)作 圍繞中心意思寫》課件
- 2024-2030中國胎牛血清市場現(xiàn)狀研究分析與發(fā)展前景預(yù)測報告
- 運用多媒體教學(xué)資源提升課堂互動與教學(xué)效果
- 地理學(xué)科課外活動計劃方案設(shè)計
- 國外中學(xué)物理實驗教學(xué)現(xiàn)狀
- MOOC 音樂與科學(xué)-南京郵電大學(xué) 中國大學(xué)慕課答案
- 自然資源調(diào)查監(jiān)測技能競賽理論考試題庫大全-中(多選題)
- 人教部編版語文八年級上冊第六單元 第26課 詩詞五首(教材解讀)
評論
0/150
提交評論