Qmake在QT中的使用-基礎(chǔ)電子_第1頁
Qmake在QT中的使用-基礎(chǔ)電子_第2頁
Qmake在QT中的使用-基礎(chǔ)電子_第3頁
Qmake在QT中的使用-基礎(chǔ)電子_第4頁
Qmake在QT中的使用-基礎(chǔ)電子_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

精品文檔-下載后可編輯Qmake在QT中的使用-基礎(chǔ)電子作者:王姍姍,華清遠見嵌入式學院講師。

從題而看,我們必須要明確的是qmake不僅僅是可以在QT中可以使用,在其他的情況下也可以使用。實際上qmake是一個幫助在不同平臺上簡化編譯步驟的工具,她是來自Trolltech,qmake能夠自動生成Makefile使得只需要少量的信息就可以創(chuàng)建相應(yīng)的Makefile,qmake能用于很多的軟件工程,不管該軟件工程是否是用qt寫的。

qmake能生成Makefile主要是以工程文件里面的信息為基礎(chǔ).工程文件是開發(fā)者創(chuàng)建的,通常是很簡單的.但是一些復雜的工程需要創(chuàng)建復雜的工程文件文件,qmake包含別的特性來支持qt開發(fā).自動的包含uic和moc的編譯規(guī)則.qmake也可以生成MicrosoftVisualstudio的工程文件而不要求開發(fā)者改變qt的工程文件。

Pro文件

首先我們看下面的例子:

1)CONFIG+=qtdebug

2)HEADERS+=hello.h

3)SOURCES+=hello.cpp

4)SOURCES+=main.cpp

5)win32{

SOURCES+=hellowin.cpp

}

6)unix{

SOURCES+=hellounix.cpp

}

7)!exists(main.cpp){

error(“Nomain.cppfilefound”)

1)首先將源文件添加到工程文件,可以使用SOURCES變量來做這件事情;

2)接下來添加頭文件,用同樣的方法添加,不同的是變量名是HEADERS

3)這是一個qt的程序,我們想把qt加入到CONFIG變量里面以便qmake能夠添加相關(guān)需要鏈接的qt的庫和確保moc和uic能包含到將要生成的Makefile里面,所以設(shè)置CONFIG變量

4)一個Release版本的程序沒有包含任何調(diào)試符合或者其他的調(diào)試信息,在開發(fā)過程中,給程序提供調(diào)試版本的的相關(guān)信息是十分有用的.所以可以在工程文件里面的CONFIG加上debug就做到了。

5)當你編碼了一段時間后,你的程序可能要做一些平臺相關(guān)的東西,并且決定保持平臺相關(guān)的代碼獨立性.因此你要做成2個新的文件來包含到你的pro文件,hellowin.cppandhellounix.cpp我們不能都把這2個文件添加到SOURCES變量中,因為將會在Makefile文件里面包含這2個文件.所以,我們要做的就是使用一個域的東西來使得qmake能處理這樣的平臺相關(guān)的問題.加上第5句,如果是在Windows下運行qmake,就把hellowin.cpp添加到源文件鏈表里面,如果在別的平臺運行qmake,就會忽略它。

6)加上第六句,創(chuàng)建一個unix平臺相關(guān)的域

7)如果某寫特定的文件不存在,你可能想不要創(chuàng)建Makefile了,我們可以通過使用exists()函數(shù)檢查一個文件是否存在,我們使用error()函數(shù)可以停止qmake的處理進程.這些都是域的做法一樣.只不過用函數(shù)簡單的替代域.例子中加上了一個檢查main.cpp文件。上面我們分析的是一個pro文件它是用來編譯應(yīng)用程序的,其實它還可以用來編譯庫以及插件。有時我們還需要修改下pro文件來編譯我們的程序,下面給出幾個例子:

聲明Qt庫模塊

如果CONFIG變量包含了qt這個值,表明qmake支持了qt的程序,但是還需要調(diào)整一些你程序中使用的qt的模塊.這是使用QT變量,就能達到這個目的。QT是用來聲明使用到的一些額外的模塊.例如.通過下面的方法,我們使得XML和網(wǎng)絡(luò)模塊有效

CONFIG+=qt

QT+=networkxml

注意,默認情況下QT包含了core和gui模塊了所以上面的聲明是添加了XML和網(wǎng)絡(luò)模塊到默認的列表里面.下面的語句就是忽略了默認模塊,當編譯程序源代碼時候會導致出錯

QT=networkxml#Thiswillomitthecoreandguimodules.

如果你想編譯一個不需要gui模塊的工程,你需要用”-=”操作符號來去除包含,默認情況下,QT同時包含了core和gui兩個模塊,所以下面的語句就是小型的Qt工程會被編譯

QT-=gui#Onlythecoremoduleisused.

下面的表格顯示了QT變量可以使用的選項,并解釋了相應(yīng)的特點

core(includedbydefault)

QtCoremodule模塊

gui(includedbydefault)

QtGuimodule界面模塊

network

QtNetworkmodule支持網(wǎng)絡(luò)模塊

opengl

QtOpenGLmodule支持opengl圖像編程

sql

QtSqlmodule支持sql數(shù)據(jù)庫驅(qū)動

svg

QtSvgmodule支持svg矢量圖形

xml

QtXmlmodule支持xml模塊

qt3support

Qt3Supportmodule支持qt3類

要注意的是,添加opengl到QT變量里面,等價于往CONFIG變量里面添加,所以對qt應(yīng)用程序,沒有必要同時往QT變量和CONFIG變量里面添加opengl選項

聲明Qt庫模塊

qmake可以通過專門的prf文件設(shè)置另外的配置特性.這些特性通常提供給編譯時候的自定義的工具使用.為了在處理過程添加一個特性,往CONFIG變量里面添加一個特性名字,該名字跟特性的文件名相同(mkspecs\features目錄里面)

例如qmake可以在編譯過程利用pkg-config提供支持的額外的庫,例如D-Bus庫和ogg庫,用下面的方法

CONFIG+=link_pkgconfig

PKGCONFIG+=oggdbus-1

聲明其他的庫

如果你需要在工程中使用其他的庫,你需要在工程文件里面指定

讓qmake找到庫的路徑和相應(yīng)需要連接的庫,可以在LIBS變量里面添加.庫的路徑要給出,或者常見的unix樣式的符號來指定庫和庫的路徑

例如下面的展示了如何使用指定的庫

LIBS+=-L/usr/local/lib-lmath

可以用類似的方法來指定頭文件的路徑,不過是使用INCLUDEPATH變量,如下面可能添加好幾個頭文件的路徑

INCLUDEPATH=c:/msdev/included:/stl/include

不過我的習慣是下面這樣的,比較清晰還有,windows的路徑不要有空格,中文也不要有,斜杠也推薦用/而不是windows的\因為跟分行符號\相同了/可以在unix和windows用,但是\貌似到了unix或linux就不行了,所以用/是通用的

INCLUDEPATH=c:/msdev/include\

d:/stl/include

運行qmake

當在命令行里面運行qmake時候,可以指定變量選項來定制qmake的行為,這樣使得編譯過程更協(xié)調(diào),提供更有用的診斷信息,并能夠使你的工程用于指定的目標平臺。

語法

用來運行qmake的語法如下

qmake[mode][options]files

qmake支持兩種不同模式的操作,默認情況下qmake將會使用project中的配置來生成Makefile文件,但是也可以用qmake生成pro文件.如果你想明確的設(shè)置選項,你必須在所有其他的選項前指定,模式可以是下面的其中之一的值

·makefileqmake將輸出一個Makefile文件。

·projectqmake將輸出一個pro文件。

下面的選項用來同時指定生成和特殊模式設(shè)置。文件參數(shù)是列出了一個或者多個工程文件(pro文件)用空格分開

選項

在命令行里面,為qmake指定一些選項是為了自定義編譯的過程。并覆蓋平臺的為qmake做的默認設(shè)置,下面的基本的選項提供了用法信息,指定qmake寫到輸出文件的那里,控制調(diào)試信息的等級在控制臺打印出來。

·help列出qmake幫助信息

·ofile直接輸出到文件file。如果這個選項沒有指定,qmake將會嘗試使用合適的文件名作為輸出,這依賴于當前的運行模式。如果指定了‘-’,輸出將會直接在控制臺打印出來。

·d列出qmake的調(diào)試信息由于工程需要在每個目標平臺上進行不同的編譯,并有很多子目錄,你可以在運行qmake的時候使用下面的選項來設(shè)置相應(yīng)的指定平臺的變量:

·unixqmake運行在unix模式。在這個模式下,將會使用unix風格的文件命名規(guī)則和路徑轉(zhuǎn)換,另外的測試unix域是成功的。這是unix平臺的默認模式。

·macxqmake運行在MacOSX模式。在這個模式下,將會使用unix風格的文件命名規(guī)則和路徑轉(zhuǎn)換,另外的測試macx域是成功的。這是MacOSX平臺的默認模式。

·win32qmake運行在win32模式。在這個模式下,將會使用Windows風格的文件命名規(guī)則和路徑轉(zhuǎn)換,另外的測試win32域是成功的。這是Windows平臺的默認模式。工程的模板通常在pro文件的TEMPLATE變量里面指定。我們可以使用下面的選項來重寫或者覆蓋:

·ttmplqmake將會用tmpl來重寫TEMPLATE變量的任何設(shè)置,但只在pro文件被處理之后。

·tpprefixqmake將添加prefix到TEMPLATE變量里面。

調(diào)整警告信息的級別能夠幫助你找到pro文件的問題所在:

·Wallqmake將會所有知道的警告信息。

·Wnoneqmake不產(chǎn)生任何警告信息。

·Wparserqmake只產(chǎn)生詞法分析的警告。在解析你的pro文件的時候會警告你一些普通的缺陷和潛在問題。

·Wlogicqmake警告你在pro文件存在一些普通

Makefile模式選項

qmake-makefile[options]files

在Makefile模式,qmake將會生成用于編譯工程的Makefile文件,另外下面的選項可能在本模式下使用,以影響工程文件的生成方式:

·afterqmake將會在指定的文件后面處理一些命令行給出的任務(wù)

·nocacheqmake將忽略。qmake.cache文件。

·nodependqmake將不產(chǎn)生任何依賴信息。

·cachefileqmake將使用指定的緩沖文件file而忽略其他找到的.qmake.cache文件。

·specspecqmake將會使用spec作為平臺的路徑和編譯器信息,環(huán)境變量QMAKESPEC設(shè)置的值將會被忽略。

你也可以在命令行傳遞qmake參數(shù);他們將會在所有的指定的文件之前處理:

qmake-makefile-unix-oMakefile“CONFIG+=test”

上面的意思就是,在unix模式下,使用

加入test選項生成Makefile,但是一些指定的選項當他們是默認的情況是沒有必要的添加的,因此,如果在unix上就是下面的

qmake“CONFIG+=test”

如果你確定你自己想在指定的文件后面處理一些變量,你可以傳遞-after選項。當這個被指定時,命令行所有的任務(wù)在–after選項之后會被延遲,直到指定的文件傳進來了。

ProjectModeOptions

qmake-project[options]files

在工程模式,qmake將會生成pro文件。另外,你可以在本模式下添加下面的選項:

·rqmake將會遍歷目錄

·nopwdqmake將會不理

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論