日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 工業(yè)控制 > 電子設(shè)計自動化
[導讀]作者:王姍姍,華清遠見嵌入式學院講師。 從題而看,我們必須要明確的是qmake不僅僅是可以在QT中可以使用,在其他的情況下也可以使用。實際上qmake是一個幫助在不同平臺上簡化編譯步驟的工具,她是來自Trolltech,qmak

作者:王姍姍華清遠見嵌入式學院講師。

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

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

Pro文件

首先我們看下面的例子:

1) CONFIG += qt debug

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( “No main.cpp file found” )

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.cpp and hellounix.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文件它是用來編譯應用程序的,其實它還可以用來編譯庫以及插件。有時我們還需要修改下pro文件來編譯我們的程序,下面給出幾個例子:

聲明Qt庫模塊

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

CONFIG += qt

QT += network xml

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

QT = network xml # This will omit the core and gui modules.

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

QT -= gui # Only the core module is used.

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


 
core (included by default)

QtCore module 核心模塊

gui (included by default)

QtGui module 界面模塊

network

QtNetwork module 支持網(wǎng)絡模塊

opengl

QtOpenGL module 支持opengl圖像編程

sql

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

svg

QtSvg module 支持svg矢量圖形

xml

QtXml module 支持xml模塊

qt3support

Qt3Support module 支持qt3類

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

聲明Qt庫模塊

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

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

CONFIG += link_pkgconfig

PKGCONFIG += ogg dbus-1

聲明其他的庫

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

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

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

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

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

INCLUDEPATH = c:/msdev/include d:/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è)置選項,你必須在所有其他的選項前指定,模式可以是下面的其中之一的值

·makefile qmake將輸出一個Makefile文件。

·project qmake將輸出一個pro文件。

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

選項

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

·help 列出qmake幫助信息

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

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

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

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

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

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

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

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

·Wall qmake將會報告所有知道的警告信息。

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

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

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

Makefile 模式選項

qmake -makefile [options] files

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

·after qmake將會在指定的文件后面處理一些命令行給出的任務

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

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

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

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

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

qmake -makefile -unix -o Makefile “CONFIG+=test” test.pro

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

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

qmake “CONFIG+=test” test.pro

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

Project Mode Options

qmake -project [options] files

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

·r qmake將會遍歷目錄

·nopwd qmake將會不理會你當前工作目錄的源代碼文件而去使用指定的文件

在這個模式.files變量可以是文件或者目錄的列表 如果指定一個目錄,將會包含進DEPENDPATH變量里面 目錄里面相關(guān)的代碼會被包含進生成的工程文件里面。 如果給的是文件, 將會添加到正確的變量, 這主要依賴于他們的擴展名(后綴名); 例如, .ui 文件會被添加到 FORMS(qt2是INTERFACES吧), .cpp 文件會被添加到 SOURCES。

在這個模式下。你也可以傳遞任務到命令行里面, 當這樣做的時候,這些任務將會放到生成pro文件之后。

“本文由華清遠見http://www.embedu.org/index.htm提供”



來源:華清遠見2次

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

Qt是一款由Qt公司(前身為Trolltech)開發(fā)的跨平臺應用程序框架。它提供了豐富的功能,包括圖形用戶界面、數(shù)據(jù)庫操作、網(wǎng)絡通信等,使得開發(fā)者能夠更加便捷地創(chuàng)建高質(zhì)量、可移植性強的應用程序。Qt采用C++編寫,同時也...

關(guān)鍵字: QT RTOS

摘 要 :為解決制鞋行業(yè)中噴膠精度不高、靈活性差、生產(chǎn)效率低的問題,設(shè)計一種基于機器視覺的鞋模噴膠系統(tǒng)。該系統(tǒng)硬件由工業(yè)攝像頭、工控機及路由器構(gòu)成,軟件則采用圖像識別庫 OpenCV 與圖形界面應用程序開發(fā)框架 Qt 編...

關(guān)鍵字: 機器視覺 圖像處理 鞋模 噴膠 OpenCV QT

嵌入式系統(tǒng)是指以應用為中心、以計算機技術(shù)為基礎(chǔ),軟件硬件可裁剪、適應應用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。

關(guān)鍵字: QT 嵌入式 C++

摘 要:倉儲作為物流與供應鏈的核心環(huán)節(jié),對食品安全的控制起著至關(guān)重要的作用。溫濕度是影響糧食倉儲過程安全與品質(zhì)的重要因素。文中使用無線傳感網(wǎng)絡進行數(shù)據(jù)采集,通過Qt平臺設(shè)計軟件系統(tǒng),并借助數(shù)據(jù)庫進行數(shù)據(jù)存儲與分析處理,實...

關(guān)鍵字: 成品糧 倉儲 溫濕度監(jiān)測 無線傳感網(wǎng)絡 QT

在此部件上繪制行號,并將其放置在CodeEditor的viewport()的左邊距區(qū)域上,QWidget類也可以幫助我們對其內(nèi)容進行滾動。

關(guān)鍵字: QT 代碼編輯器

不管是Qt新手還是開發(fā)過qt的群體來說,對Qt Designer、Qt Quick Designer、Qt Creator這幾個應用程序肯定是熟悉的。

關(guān)鍵字: QT IDE C

在當今社會,人們的生活水平普遍提高,工作強度越來越大,營養(yǎng)的過剩和運動量的減少,導致心腦血管疾病的發(fā)病率是越來越高。

關(guān)鍵字: Linux QT GPRS 遠程集群式 心臟病人實時診斷系

qt值得學習嗎? 嵌入式要學的東西真的很多,我們可能會說不寫界面的話就不用學qt了?我不贊同。

關(guān)鍵字: 嵌入式 QT UI

什么是qt?簡單點說,Qt 就是一個跨平臺的 C++ 圖形用戶界面庫,可以同時支持桌面應用程序開發(fā)、嵌入式開發(fā)和移動開發(fā),覆蓋了現(xiàn)有的所有主流平臺。

關(guān)鍵字: QT 程序 開發(fā)

qt值得學習嗎? 嵌入式要學的東西真的很多,我們可能會說不寫界面的話就不用學qt了?我不贊同,原因是……

關(guān)鍵字: 嵌入式 QT
關(guān)閉