ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Сборка QT по WinCE 6.0 tion pro 2  (Прочитано 5616 раз)

0 Пользователей и 1 Гость просматривают эту тему.

A Che

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 7
Сборка QT по WinCE 6.0 tion pro 2
« : 04 Сентября, 2012, 00:58:57 »

Сборка QT под WinCE 6

ссылки: http://doc.crossplatform.ru/qt/4.6.x/windowsce-customization.html - перевод

документации по сборке QT

Было острое желание перенести QT на WinCE платформу.

Установил Visual studio 2005, сервис пак 1, программы для работы с WinCE под студию,

кастом SDK для свое платы (называется SDK for tion pro v2).

В документации приведена сборка QT под WinCE 5, там идет стандартное SDK.

Закачал qt-everywhere-opensource-src-4.7.4

Создал в паке mkspec папку wince60teon-armv4i-msvc2005, в ней файлы

qmake.conf

   #
   # qmake configuration for wince60tion-armv4i-msvc2005
   #
   # Written for Microsoft VC2005.NET with tion pro v2 SDK for WindowsCE 6.0 (ARMV4I)
   #
   include(../common/wince/qmake.conf)
   
   CE_SDK      = SDK for Tion Pro v2
   CE_ARCH     = ARMV4I
   
   DEFINES      += UNDER_CE WINCE _WINDOWS _UNICODE UNICODE    _WIN32_WCE=0x600 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM    _WIN32 __arm__ QT_NO_PRINTER QT_NO_PRINTDIALOG

   QMAKE_CFLAGS           += -QRarch4T -QRinterwork-return

   QMAKE_LFLAGS_CONSOLE    = /SUBSYSTEM:WINDOWSCE,6.00 /MACHINE:THUMB    /ENTRY:mainACRTStartup
   QMAKE_LFLAGS_WINDOWS    = /SUBSYSTEM:WINDOWSCE,6.00 /MACHINE:THUMB
   QMAKE_LFLAGS_DLL        = /SUBSYSTEM:WINDOWSCE,6.00 /MACHINE:THUMB    /DLL
   QMAKE_LIBFLAGS          = $$QMAKE_LFLAGS_WINDOWS
   QMAKE_LIBFLAGS_RELEASE  = /LTCG
   QMAKE_LIBS              = corelibc.lib
   QMAKE_LIBS_CORE         = corelibc.lib ole32.lib oleaut32.lib    uuid.lib commctrl.lib coredll.lib winsock.lib
   QMAKE_LIBS_GUI          = ceshell.lib ole32.lib $$QMAKE_LIBS_CORE
   QMAKE_LIBS_NETWORK      = ws2.lib

default_post.prf
   # Visual Studio has some definitions set internally.
   # Thus we do not need to redefine these.
   equals(TEMPLATE, "vc.*") {
       DEFINES -= _M_ARM
       QMAKE_CXXFLAGS += -fp:precise
   }

qplatformdefs.h
   /* Коменты*/
   #include "../common/wince/qplatformdefs.h"

Далее сделал configure.exe с такими ключами
   configure.exe -platform win32-msvc2005 -xplatform wince60teon-armv4i-msvc2005 -static -no-openssl -no-phonon -no-webkit -no-qt3support -no-scripttools -no-phonon-backend -no-gif -no-libpng -no-libmng -no-libtiff -no-opengl -debug-and-release -nomake examples -nomake demos -no-accessibility -D T_NO_CURSOR -D QT_NO_DRAGANDDROP -D QT_NO_CLIPBOARD -D QT_NO_ACCESSIBILITY -D QT_NO_SESSIONMANAGER -no-exceptions -opensource -qmake

После этого
   посмотрел название SDK
      checksdk.exe -list
         ...
          SDK for Tion Pro v2 (ARMV4I)
         ...

   собрал скрипт для установки PATH
      checksdk.exe -sdk "SDK for Tion Pro v2 (ARMV4I)" -script teon2.bat
   запустил
      teon2.bat

Далее nmake.exe

И вот в чем проблема, собиралось собиралось все и потом на QTXml выдало ошибку...
Вообще nmake создает в корне projects.sln, который можно открыть в visual studio, в ней нажать F7 (собрать все) и qt я так понимаю будет собираться.
И таким образом (через visual studio) qt собирается... Собрался и qmake

Далее открываю Qt creator, создаю проект, в нем прописываю пути к собраному qmake, он все видит, цепляется и все вроде бы хорошо...
Но при компиляции проекты выдает ошибку линкера типо "несовместимость библиотеки x86 и thumb" и инструментарий говорит, что типо компилер под x86 к qmake...
И конечно же ничего не запускается...

Собственно вопросов несколько:
1) Почему через консоль и nmake qt не собирается, а через visual studio собралось? (В студии точно выбрана цель ARM и собралось точно под арм, смотрел готовые файлы)
2) Какие все-таки ключи надо прописывать qmake.conf в мк спец в DEFINES  ( у меня   += UNDER_CE WINCE _WINDOWS _UNICODE UNICODE    _WIN32_WCE=0x600 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM    _WIN32 __arm__ QT_NO_PRINTER QT_NO_PRINTDIALOG по подобию других)
В мануале написано что-то типо "для каждого случая свои ключи". Как понять какие мне нужно под данный SDK?

3) Предположение: в том же qmake.conf
 QMAKE_LIBS              = corelibc.lib
Может надо прямой путь задавать к этой библиотеке? А то мне кажется, что он цепляет библиотеку x86, а не арм...

4) Почему qmake в qt creator собирает часть под x86, часть под арм и пытается из этого всего собрать что-то одно?
Может надо как-то пути прописывать... Хотя qmake должен как раз сам все прописать...

Записан