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/_TGTCPU

    I 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
    nmake

    nmake 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.



  • good one. you should add a howto wiki page in the forum with these steps



  • [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 = ARMV4I

    were replaced to

    CE_SDK = Platform Builder
    CE_ARCH = _TGTCPU

    otherwise 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.exe

    this 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/debug

    were 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/lib

    QTGUID4.DLL
    C:/Qt/2010.04CE/qt/lib

    MSVCR80D.DLL
    C:/Program Files/Microsoft Visual Studio 8/VC/ce/Dll/armv4i

    the 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 NK

    and 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/inc

    LINK : fatal error LNK1181: cannot open input file 'corelibc.lib'
    --> add C:/WINCE600/OSDesigns/OSDesign10/Wince600/PCB06998_ARMV4I/cesysgen/sdk/lib/ARMV4I/debug

    1>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.exe

    bool_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.cpp

    set breakpoint in

    AnalogClock::paintEvent

    call Target --> Attach device, etc



Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.