How to install for WinCE 6.0 ?
-
Hi!
I have a question.
Does anybody at Nokia knows how to install QT for WinCE 6.0 ?
I downloaded 4.6.3 and first tried to install for Windows.
I used instructions here http://doc.trolltech.com/4.6.2/install-win.html ( "Installing Qt on Windows")
for itstalling it for Windows. It was not easy. There were errors, I looked at forums I found the same recipe as 9 months ago:
bq. delete the src/script/tmp/moc/debug_shared/mocinclude.tmp
and the same file in release_shared.Ok, then it successfully finished, I compiled and run programm, all setup was done in VS commnd prompt and and no path changed left in system.
Then I tried to install for WinCE 6.0. I looked in internet and found the page "Installing Qt on Windows CE"
http://doc.qt.nokia.com/4.6/install-wince.html
It was obviously for WinCE 5.0.
It tells
bq. type configure -help to get a list of all available options. See the README file for the list of supported platforms.
"configure -help" does not give the list of platforms and README ( which readme?) sends you to http://qt.nokia.com/doc/4.6/supported-platforms.html , the page which contains the tips that WinCE 6.0 is not supported yet.
Then I found the three years old discussion "Building for WinCE 6.0" ( http://lists.trolltech.com/pipermail/qt-wince-interest/2007-October/000050.html ) which goes around some video (OMG) http://dist.trolltech.com/video/qtwincetp/qtwincetp.html
The main idea of that of that discussion is that something is really wrong with that video and frankly speaking I did not understand what exactly is wrong. I just tried to follow that video and got error on the second step:
configure -platform win32-msvc2005 -xplatform wincewm60professional-msvc2005
returns "File or path is not found (nmake)"
I did it in usual command prompt and really don't know where it could find that nmake.
Is here any real live person who managed to install QT for WinCE 6.0 ?
-
OK, then...
bq. C:Qt2010.04 CEqtbin>checksdk -list
Available SDKs:
SDK Name: Pocket PC 2003 (ARMV4)
SDK Name: Smartphone 2003 (ARMV4)
SDK Name: Platform Builder (_TGTCPU)bq. checksdk -sdk Platform Builder (_TGTCPU) -script tgt_cpu.bat
The output contained obviously wrong paths:
bq. echo Environment Selection:Platform Builder (_TGTCPU)
set PATH=C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_cex86;C:/Program Files/Microsoft Visual Studio 8/VC/bin;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/bin;C:/Program Files/Microsoft Visual Studio 8/Common7/Tools;C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;C:/Program Files/Microsoft Visual Studio 8/Common/Tools;C:/Program Files/Microsoft Visual Studio 8/Common/IDE;C:/Program Files/Microsoft Visual Studio 8/;$(FrameworkSDKDir)Bin;%PATH%
set INCLUDE=C:/Program Files/Microsoft Visual Studio 8/VC/ce/include;C:/Program Files/Microsoft Platform Builder/6.00/cepb/IdeVS/GenericSdk/include/_TGTCPU;C:/Program Files/Microsoft Platform Builder/6.00/cepb/IdeVS/GenericSdk/include;C:/Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/include;C:/Program Files/Microsoft Visual Studio 8/SmartDevices/SDK/SQL Server/Mobile/v3.0
set LIB=C:/Program Files/Microsoft Platform Builder/6.00/cepb/IdeVS/GenericSdk/lib/_TGTCPU;C:/Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/lib/_TGTCPU;C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/_TGTCPU
.For example, these folders do not exist:
C:/Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/lib/_TGTCPU;
C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/_TGTCPUI took the paths from here ( October 2007 ):
http://lists.trolltech.com/pipermail/qt-wince-interest/2007-October/000052.html
bq. set
INCLUDE=C:/qt/4.3.2-tp1/include;C:/WINCE600/PUBLIC/COMMON/SDK/INC;C:/Pro
gram Files/Microsoft Visual Studio 8/VC/ce/include;C:/Program
Files/Microsoft Visual Studio
8/VC/ce/atlmfc/include;C:/WINCE600/OSDesigns/MyTestOSDesign/MyTestOSDesi
gn/Wince600/MyTestArmBSP_ARMV4I/cesysgen/ddk/inc;C:/WINCE600/OSDesigns/M
yTestOSDesign/MyTestOSDesign/Wince600/MyTestArmBSP_ARMV4I/cesysgen/oak/i
nc;C:/WINCE600/OSDesigns/MyTestOSDesign/MyTestOSDesign/Wince600/MyTestAr
mBSP_ARMV4I/cesysgen/sdk/inc
set
LIB=C:/qt/4.3.2-tp1/lib;C:/WINCE600/OSDesigns/MyTestOSDesign/MyTestOSDes
ign/Wince600/MyTestArmBSP_ARMV4I/cesysgen/sdk/lib/ARMV4I/retail;C:/WINCE
600/PUBLIC/COMMON/SDK/LIB/ARMV4I/RETAIL;C:/WINCE600/PUBLIC/IE/OAK/LIB/AR
MV4I/RETAIL;C:/Program Files/Microsoft Visual Studio
8/VC/ce/lib/armv4i;C:/Program Files/Microsoft Visual Studio
8/VC/ce/atlmfc/lib/armv4i;C:/WINCE600/OSDesigns/MyTestOSDesign/MyTestOSD
esign/Wince600/MyTestArmBSP_ARMV4I/cesysgen/oak/lib/ARMV4I/retail;C:/WIN
CE600/OSDesigns/MyTestOSDesign/MyTestOSDesign/Wince600/MyTestArmBSP_ARMV
4I/cesysgen/sdk/lib/ARMV4I/retail;
set PATH=C:/Program Files/Microsoft Visual Studio
8/VC/ce/bin/x86_arm;%PATH%
.And adjusted them for my configuration:
bq. set
INCLUDE=
C:/Qt/2010.04CE/qt/include;
C:/Program Files/Microsoft Visual Studio 8/VC/ce/include;
C:/Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/include;
C:/Program Files/Microsoft Visual Studio 8/SmartDevices/SDK/SQL Server/Mobile/v3.0;
C:/WINCE600/PUBLIC/COMMON/SDK/INC;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/ddk/inc;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/oak/inc;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/sdk/inc;
set
LIB=
C:/Qt/2010.04CE/qt/lib;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/sdk/lib/ARMV4I/debug;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/oak/lib/ARMV4I/debug;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/ddk/lib/ARMV4I/debug;
C:/WINCE600/PUBLIC/COMMON/SDK/LIB/ARMV4I/DEBUG
C:/WINCE600/PUBLIC/IE/OAK/LIB/ARMV4I/DEBUG
C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/armv4i;
C:/Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/lib/armv4i;
set PATH=
C:/Qt/2010.04CE/qt/bin;
C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_arm;
C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_cex86;
C:/Program Files/Microsoft Visual Studio 8/VC/bin;
C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/bin;
C:/Program Files/Microsoft Visual Studio 8/Common7/Tools;
C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;
C:/Program Files/Microsoft Visual Studio 8/;
%PATH%
.they were put in bat file tgt_cpu_CE.bat
Then I made the sequence like this in VS command prompt:
set path=%path%;C:/Qt/2010.04CE/qt/bin
cd C:/Qt/2010.04CE/qt
configure -platform win32-msvc2005 -xplatform wince60standard-armv4i-msvc2005 -rtti -exceptions -stl
tgt_cpu_CE.bat
nmakenmake returned the error:
bq. bug_shared/moc_qscriptextensionplugin.cpp
api/qscriptextensionplugin.h(43): Error: Undefined interface
NMAKE : fatal error U1077: 'C:/Qt/2010.04CE/qt/bin/moc.exe' : return code '0x1'
Stop.
NMAKE : fatal error U1077: '"C:/Program Files/Microsoft Visual Studio 8/VC/BIN/n
make.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.I did that was prescribed in December 2009:
bq. to delete the src/script/tmp/moc/debug_shared/mocinclude.tmp
and the same file in release_shared.and pressed nmake again
And it successfully finished.
-
[quote author="chetankjain" date="1282555806"]good one. you should add a howto wiki page in the forum with these steps[/quote]
I will try
Part two:
In folder
C:/Qt/2010.04CE/qt/mkspecs/wince60standard-armv4i-msvc2005
the strings
CE_SDK = STANDARDSDK_600 # replace with actual SDK name
CE_ARCH = ARMV4Iwere replaced to
CE_SDK = Platform Builder
CE_ARCH = _TGTCPUotherwise VS does not work with this QT.
VS for QT projects was always started from bat file,
which sets the environment, like this:set INCLUDE=C:/Qt/2010.04CE/qt/include;C:/Program Files/Microsoft Visual Studio 8/VC/ce/include;C:/Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/include;C:/Program Files/Microsoft Visual Studio 8/SmartDevices/SDK/SQL Server/Mobile/v3.0;C:/WINCE600/PUBLIC/COMMON/SDK/INC;C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/ddk/inc;C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/oak/inc;C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/sdk/inc;
set LIB=C:/Qt/2010.04CE/qt/lib;C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/sdk/lib/ARMV4I/debug;C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/oak/lib/ARMV4I/debug;C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/ddk/lib/ARMV4I/debug;C:/WINCE600/PUBLIC/COMMON/SDK/LIB/ARMV4I/DEBUG;C:/WINCE600/PUBLIC/IE/OAK/LIB/ARMV4I/DEBUG;C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/armv4i;C:/Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/lib/armv4i;
set PATH=C:/Qt/2010.04CE/qt/bin;C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_arm;C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_cex86;C:/Program Files/Microsoft Visual Studio 8/VC/bin;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/bin;C:/Program Files/Microsoft Visual Studio 8/Common7/Tools;C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;C:/Program Files/Microsoft Visual Studio 8/;%PATH%
devenv
The QT integration for VS was installed, qt-vs-addin-1.1.5.exe
QT addin adds menu "QT" to VS and there is "QT options",
where this QT was added by setting path to C:/Qt/2010.04CE/qt
File->New->Project->Qt4 Projects->Qt Windows CE Application
project was created.
In file C:/Qt/2010.04CE/mingw/lib/gcc/mingw32/4.4.0/include/c++/mingw32/bits/c++config.h
@The strings
#include <bits/os_defines.h>
#include <bits/cpu_defines.h>
were replaced by
#include <os_defines.h>
#include <cpu_defines.h>
@
In folder C:/Program Files/Microsoft Visual Studio 8/VC/bin
the x86 compiler cl.exe was renamed to cl_old.exethis could be somehow regulated by changing paths in bat file ?
The paths
C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/armv4i
C:/WINCE600/OSDesigns/OSDesign10/Wince600/My_platform_ARMV4I/cesysgen/sdk/lib/ARMV4I/debugwere added to the "Additional libraries directories" property of project
Run time library option was changed to "Multi-threaded debug"
After every compilation the file
moc_qt_wince_test.cpp
was changed to remove all "rel_ops::" prefixes
Whats that?
The exe file was opened by depends.exe and several files were collected to accompany it:
QTCORED4.DLL
C:/Qt/2010.04CE/qt/libQTGUID4.DLL
C:/Qt/2010.04CE/qt/libMSVCR80D.DLL
C:/Program Files/Microsoft Visual Studio 8/VC/ce/Dll/armv4ithe file COREDLL.DLL
C:/WINCE600/OSDesigns/OSDesign10/RelDir/My_platform_b043362_i_MX253_ARMV4I_Debug
is already provided by platform
Then VS was opened by normal way with another solution, which contained the "OSDesign10" of Platform Builder.
In this solution the folder "Subprojects" was right-clicked to "add new subproject"->"WinCE Application".The file test_app.reg of this subproject was changed to add
@[HKEY_LOCAL_MACHINE/Init]
"Depend50"=hex:14,00, 1e,00
"Launch50"="test_app.exe"@This application was compiled and tested.
After this its test_app.bib was changed to add these lines:
msvcr80d.dll D:/projects/VS_8/QT_WinCE_test/debug/package/msvcr80d.dll NK
QtCored4.dll D:/projects/VS_8/QT_WinCE_test/debug/package/QtCored4.dll NK
QtGuid4.dll D:/projects/VS_8/QT_WinCE_test/debug/package/QtGuid4.dll NK
QT_WinCE_test.exe D:/projects/VS_8/QT_WinCE_test/debug/package/QT_WinCE_test.exe NKand the code to start QT_WinCE_test.exe was added to test_app.exe:
STARTUPINFO startupInfo;
PROCESS_INFORMATION processInfo;memset(&startupInfo,0,sizeof(STARTUPINFO));
bool_r=CreateProcess(
_T("QT_WinCE_test.exe"),
NULL,
NULL,
NULL,
FALSE,
NULL,
NULL,
NULL,
&startupInfo,
&processInfo);
Possibly the QT_WinCE_test.exe can be started without test_app.exe
using the project.reg and project.bib
but test_app.exe gives you ability to test your platform.
What should I do with "rel_ops::" prefixes in
d:/projects/VS_8/QT_WinCE_test/GeneratedFiles/Debug/moc_qt_wince_test.cpp ?
after I remove all "rel_ops::" project can be compiled and works. But after rebuild they appear again.
-
Part three:
Samples.
There is a big folder named "examples"
I opened the VS and used the "Replace in files" dialog to replace all strings
STANDARDSDK_600
by
Platform Builder (_TGTCPU)
in all files in that directory.
After this it was possible to open samples at low level - by opening their vcproj files.
VS was started from bat file, which sets environment.
Also it was necessary to add include and link directories in projects:
1>c:/qt/2010.04ce/qt/include/qtcore/../../src/corelib/global/qglobal.h(45) : fatal error C1083: Cannot open include file: 'stddef.h': No such file or directory
--> add C:/WINCE600/OSDesigns/OSDesign10/Wince600/PCB06998_ARMV4I/cesysgen/sdk/incLINK : fatal error LNK1181: cannot open input file 'corelibc.lib'
--> add C:/WINCE600/OSDesigns/OSDesign10/Wince600/PCB06998_ARMV4I/cesysgen/sdk/lib/ARMV4I/debug1>LINK : fatal error LNK1104: cannot open file 'LIBCMTD.lib'
--> add C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/armv4i -
Part four:
Debugging
In VS started by QT environment bat file
analogclock project --> Property pages --> Linker --> Debugging --> Generate Map File
Build it
in VS started usual way with OS Design project
OS Design project --> Property pages --> Pre-Make Image
add command
copy C:/Qt/2010.04CE/qt/examples/widgets/analogclock/debug/. C:/WINCE600/OSDesigns/OSDesign10/RelDir/My_platform_b043362_i_MX253_ARMV4I_Debug
in
c:/WINCE600/OSDesigns/OSDesign10/test_app/test_app.bib:
change record for analogclock.exe
analogclock.exe $(_FLATRELEASEDIR)/analogclock.exe NK
in
c:/WINCE600/OSDesigns/OSDesign10/test_app/test_app.cpp
change code to start analogclock.exebool_r=CreateProcess(
_T("analogclock.exe"),
NULL,
NULL,
NULL,
FALSE,
NULL, //NORMAL_PRIORITY_CLASS,
NULL,
NULL,
NULL,
&processInfo);
Then open
C:/Qt/2010.04CE/qt/examples/widgets/analogclock/analogclock.cppset breakpoint in
AnalogClock::paintEvent
call Target --> Attach device, etc