在最近觉得QT越来越好用了,都是同一QT代码,能很快的从windows XP移植到windows mobile
我先说明一下我已经编译好的QT版本:
D:\Qt\mobile\4.4.3
编译选项:
-platform
win32-msvc2008
-xplatform
wincewm60professional-msvc2008
-fast
D:\Qt\mobile\4.6.2
编译选项:
-platform
win32-msvc2008
-xplatform
wincewm60professional-msvc2008
-fast
D:\Qt\win32\4.4.3
编译选项:
-platform
win32-msvc2008
-debug-and-release
D:\Qt\win32\4.6.2
编译选项:
-platform
win32-msvc2008
-debug-and-release
1. 首先我们将这四个路径添加到VS中,工具->选项->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
以前感觉这里的设置对VS没影响,现在才发现它们是有影响的,它们就是设置环境变量QTDIR的值,
这个值在“解决方案管理器”中单击你的项目名称,然后在VS右边的“属性框”Version中可以修改
(修改后要重新生成解决方案),如图:
2. 修改这个值还没有可以移植到windows mobile下。在生成->配置管理器;在“活动解决方案平台”
的下拉框中选择“新建”,在弹出的对话框中的“键入或选择新平台”选择“Windows Mobile 6 Professional SDK (ARMV4I)”,
选择从“win32”平台复制设置,点确定即可。那时在工具栏中的Debug旁边就有一个Windows Mobile 6 Professional SDK (ARMV4I)。
3. 然后在“解决方案管理器”中右击项目,选择属性。在弹出的对话框中我们只需要添加两个东西
就够了。(记得“配置”设置“活动Debug”,平台选择“Windows Mobile 6 Professional SDK (ARMV4I)”;
点C/C++->预处理器,在“预处理器定义”中全部替换为以下内容:
_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
(中间没有回车,只有一行)
在链接器->命令行->符加选项中添加如下内容:
/subsystem:windowsce,5.00
最后在属性框中修改成mobile用的QT版本,重新生成解决方案即可。
(注:因为QTDIR值随着QT版本的改变而改变,故头文件与LIB的路径不用再修改)
如果有些代码是用了
#ifdef isMobile
#endif
包围的,我们可以在项目属性中C/C++->命令行->附加选项中加入:/D "isMobile"
记得这是在平台Windows Mobile 6 Professional SDK (ARMV4I)中。