在最近覺得QT越來越好用了,都是同一QT代碼,能很快的從windows XP移植到windows mobile
我先說明一下我已經(jīng)編譯好的QT版本:
D:\Qt\mobile\4.4.3
編譯選項(xiàng):
-platform
win32-msvc2008
-xplatform
wincewm60professional-msvc2008
-fast
D:\Qt\mobile\4.6.2
編譯選項(xiàng):
-platform
win32-msvc2008
-xplatform
wincewm60professional-msvc2008
-fast
D:\Qt\win32\4.4.3
編譯選項(xiàng):
-platform
win32-msvc2008
-debug-and-release
D:\Qt\win32\4.6.2
編譯選項(xiàng):
-platform
win32-msvc2008
-debug-and-release
1. 首先我們將這四個(gè)路徑添加到VS中,工具->選項(xiàng)->Qt->Builds->Add
D:\Qt\mobile\4.4.3=>命名為4.4.3_mobile
D:\Qt\mobile\4.6.2=>命名為4.6.2_mobile
D:\Qt\win32\4.4.3=>命名為4.4.3_win32
D:\Qt\win32\4.6.3=>命名為4.6.2_win32
以前感覺這里的設(shè)置對(duì)VS沒影響,現(xiàn)在才發(fā)現(xiàn)它們是有影響的,它們就是設(shè)置環(huán)境變量QTDIR的值,
這個(gè)值在“解決方案管理器”中單擊你的項(xiàng)目名稱,然后在VS右邊的“屬性框”Version中可以修改
(修改后要重新生成解決方案),如圖:
2. 修改這個(gè)值還沒有可以移植到windows mobile下。在生成->配置管理器;在“活動(dòng)解決方案平臺(tái)”
的下拉框中選擇“新建”,在彈出的對(duì)話框中的“鍵入或選擇新平臺(tái)”選擇“Windows Mobile 6 Professional SDK (ARMV4I)”,
選擇從“win32”平臺(tái)復(fù)制設(shè)置,點(diǎn)確定即可。那時(shí)在工具欄中的Debug旁邊就有一個(gè)Windows Mobile 6 Professional SDK (ARMV4I)。
3. 然后在“解決方案管理器”中右擊項(xiàng)目,選擇屬性。在彈出的對(duì)話框中我們只需要添加兩個(gè)東西
就夠了。(記得“配置”設(shè)置“活動(dòng)Debug”,平臺(tái)選擇“Windows Mobile 6 Professional SDK (ARMV4I)”;
點(diǎn)C/C++->預(yù)處理器,在“預(yù)處理器定義”中全部替換為以下內(nèi)容:
_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_WINDOWS;
$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;POCKETPC2003_UI_MODEL;QT_THREAD_SUPPORT;
QT_CORE_LIB;QT_GUI_LIB;QT_XML_LIB
(中間沒有回車,只有一行)
在鏈接器->命令行->符加選項(xiàng)中添加如下內(nèi)容:
/subsystem:windowsce,5.00
最后在屬性框中修改成mobile用的QT版本,重新生成解決方案即可。
(注:因?yàn)?/span>QTDIR值隨著QT版本的改變而改變,故頭文件與LIB的路徑不用再修改)
如果有些代碼是用了
#ifdef isMobile
#endif
包圍的,我們可以在項(xiàng)目屬性中C/C++->命令行->附加選項(xiàng)中加入:/D "isMobile"
記得這是在平臺(tái)Windows Mobile 6 Professional SDK (ARMV4I)中。