詳解Qt For Symbian工程文件中一些特異寫法
本文講解的是Qt For Symbian工程文件的一些特異寫法,使用到了Qt庫的內容,想要了解更多的話,請看本文的講解。
symbian本身的工程文件不具有cross-platform特性,都是一些自己唯一的定義文件,像:*.mmp,*.pkg文件。而Qt得工程文件為*.pro。如何實現*.pro到*.mmp ,*.pkg文件的映射則值得總結。
1、添加庫
對于添加庫,無論是靜態還是動態庫,都需做兩步:先是聲名一下,其后是拷貝。二者僅僅是聲名的方式不一樣。
2、聲名:
(1)動態庫
- symbian:LIBS +=
- MMP_RULES += "LIBRARY fbscli.lib"
(這里我加的是名為fbscli的動態庫)
(2)靜態庫
- symbian {
- LIBS += -lIsolated.lib \
- }
(這里我加的是名為Isolated的靜態庫)
3、拷貝
拷貝分兩部分:一部分是針對編譯進行的拷貝,一部分則是針對真機的拷貝。 編譯器在編譯時:需要找到lib文件,而其查找的路徑是epoc32\release下的子文件夾。 當然了:你要在模擬器上跑,還需要再拷貝到模擬器對應的文件夾下。
- symbian {
- BLD_INF_RULES.prj_exports += \
- ".\bin\HWR\Winscw\NRC.dll \epoc32\release\winscw\udeb\NRC.dll" \
- ".\bin\HWR\Winscw\NRC.lib \epoc32\release\winscw\udeb\NRC.lib" \
- ".\bin\HWR\Armv5\NRC.dll \epoc32\release\Armv5\urel\NRC.dll" \
- ".\bin\HWR\Armv5\NRC.lib \epoc32\release\Armv5\lib\NRC.lib" \
- }
winscw文件夾對應emulator , ArmV5對應真機。
//pkg文件,該文件在symbian中是用于打包的文件。在這里作用就是:拷貝對應文件到真機上。
//注意:里邊的OCRDll這個名稱是可以隨便指定的,只要最后使用DEPLOYMENT += 將其加進去就可以。
- symbian: {
- OCRDll.sources =./bin/HWR/Armv5/MMI_BluetoothEngine.dll
- OCRDll.path = \sys\bin
- DEPLOYMENT += OCRDll
- }
4、區分真機和模擬器
對于一些代碼部分,例如:通訊功能,攝像頭模塊等。其實無法運行在模擬器上的,只能運行在真機上。所以有時候:對于一些這樣的代碼模塊,我們最好用Macro宏來將其包起來,只在編譯真機版本時:才編譯這部分;而在編譯模擬器版本時:卻不編譯這部分。對于這個宏,我們需要在pro文件中聲明。(亦即:聲明一個只針對真機的宏)。
- symbian {
- MMP_RULES += $$LITERAL_HASH"ifdef MARM_ARMV5"
- MMP_RULES += "MACRO REAL_PHONE"
- MMP_RULES += $$LITERAL_HASH"endif"
- }
(這里假設該宏名為REAL_PHONE )
補充:當然還有很多特異的寫法,大家可以查看我上傳資源中的Qt for symbian這個資源(http://download.csdn.net/source/2447574)。這是官方給的一個指導性文件,除去上邊這些外,別的里邊介紹的也比較詳細。
上邊這兩個我都實際使用過,沒有問題。測試環境:Qt 4.5.0 Qt 4.6.2 Qt 4.6.3 真機: N97 5800
小結:詳解Qt For Symbian工程文件的一些特異寫法,對于已經運行成功的實例,你可能更有信心去解決,希望本篇本章對你有所幫助!