Qt и Windows Mobile

Продолжаю писать про Qt. В этот раз расскажу как скомпилировать Qt под Windows Mobile 5 и выше, а также как настроить студию под кпк.

Для начала необходимо скачать Visual Studio 2005/2008. 2010 не подойдёт, т.к. в ней больше нет поддержки WM < 7 версии. Скачать можно здесь (качать все 20 гигов естественно не надо). Далее нужен Windows Mobile 6 SDK (в чём отличия между Standard и Professional я так и не понял, хотя второй весит более чем в 2 раза больше). Устанавливаем сначала студию, затем WM SDK. Теперь надо скачать Qt для Win CE, качаем, распаковываем например в C:\Qt\WM.
Добавляем C:\Qt\WM\bin в PATH (например через Redmond Path)

Теперь запускаем командную строку Visual Studio и переходим в папку с Qt:
cd C:\Qt\WM

Теперь выбираем нужные опции:
configure.exe -platform win32-msvc2008 -xplatform wincewm60standard-msvc2008 -no-openssl -no-qt3support -no-scripttools -no-gif -no-opengl -debug-and-release

(можно также запустить configure -help чтобы посмотреть доступные параметры)

Теперь прописываем пути до WM SDK и VS:
set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ce\include;C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Include\Armv4i
set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\armv4i;C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Lib\ARMV4I
set PATH=C:\Program Files\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%PATH%

(у вас они могут называться немного по другому, также если у вас 64 система, то вместо Program Files скорее всего будет Program Files (x86) )

Собираем:
nmake

Это займёт минут 20-30, после чего можно скопировать из папки C:\Qt\WM\lib все dll-ки в кпк, а также C:\Program Files\Microsoft Visual Studio 8\VC\ce\dll\armv4i\msvcr90.dll (80 для 2005 студии) и из папки examples какой нибудь пример, по идее всё должно заработать. Если у вас нет кпк, то в студии есть его эмулятор (Tools -> Connect to device)

Если всё ок то идём дальше. Теперь качаем Visual Studio Add-in 1.1.7, закрываем студию и устанавливаем его. Открываем студию, идём в Qt -> Qt Options:


Нажимаем Add и указываем C:\Qt\WM. Скорее всего получаем что-то вроде этого (если нет то следующий шаг пропускаем):


Но ничего, мы пойдём другим путём — открываем regedit и идём в HKEY_CURRENT_USER\Software\Trolltech\Versions создаём там папочку 4.5.3.wm6 а в ней строковый параметр InstallDir и вбиваем в него путь до Qt. Открываем студию и смотрим в Qt -> Qt Options там должна появиться строчка 4.5.3.wm6

Создаём новый проект:


Здесь должно быть так:


Тут можно выбрать какие библиотеки подключать к проекту:

(это можно сделать потом из Qt -> Qt Project Settings -> Qt Modules)

На последней вкладке можно оставить всё как есть:


Все, пробуем собрать, и запустить на кпк, должно работать.

Сейчас напишу про виджеты и дизайнер.
  • +4
  • 18 ноября 2011, 18:21
  • RomiX

Комментарии (28)

RSS свернуть / развернуть
Хм, а почему вы выбрали для своих статей именно Win CE? Как по мне — не самая актуальная платформа. Может лучше выбрать более популярную embedded платформу (или десктопный Linux/Windows)?
0
я не выбирал конкретной платформы, в прошлой статье писал из под мака и скрин из под мака. Win Mobile тока под виндой, по этому и скрины из под винды.
Разница очень маленькая, насколько я знаю она состоит тока в вызове showMaximized() вместо show() на мобильных платофрмах
0
Я понимаю, что сама идея Qt – кроссплатформенность, и различия между платформами должны быть минимальными. Просто, думаю проще приводить примеры для десктопных версий (меньше «заморочек» с корсс-компиляцией и эмуляторами). Хотя, Вы – автор, решать Вам…
0
может кому то будет интересно под кпк писать, с него можно и роботом порулить и какими нибудь железками
а так буду под винду наверно всё делать, а кому надо уже скомпилит под кпк
0
Если будет статья по S60, я буду очень рад. Очень бы пригодилась!
Но и за Win CE спасибо, есть у меня штука на такой ОС :)
0
Главное не путать WinCE и WinMobile. Они немножечко отличаются.
0
Я не путаю, на Win CE у меня автомобильный GPS навигатор. Чем они похожи, я не в курсе :)
0
Ещё при configure можно вырубить phonon (-no-phonon -no-phonon-backend), ибо заставить его работать мало кому удавалось.

Так же, если лень прописывать пути, то после configure, в папке bin лежит батник setcepaths.bat, ему аргументом скармливаем платформу (wincewm60standard-msvc2008), и он всё делает автоматически.

Или через 'checksdk.exe -list' получить список платформ, затем если там присутствует WM6 (у меня на домашнем ПК не определилось), то запускаем 'checksdk.exe -sdk «Windows Mobile 6 Standart SDK» -script setpath.bat', что сгенерирует батник setpath.bat, в котором уже есть все пути, нужные для сборки :)

И компиляция на нетбуке с Atom 450 процем и гигом памяти заняло over 6 часов :)
0
у меня phonon с первого раза заработал, видимо потому что я не знал о том что он мог и не заработать)))
checksdk пишет что ничего не установлено((
0
А зачем нужны такие манипуляции, если сама VS предоставляет отличные средства для разработки под любые версии Windows Mobile.
0
Привет.
Уже 8 дней пытаюсь собрать всю эту байду с QT и VS2008.
Все по инструкции и уже, наверно, с десятка трех сайтов и все время какие-то грабли вылазят :(
Сейчас все собираю на winxp

Конфигурирую так:
configure -platform win32-msvc2008 -xplatform wincewm60professional-msvc2008 -no-openssl -no-qt3support -no-scripttools -no-opengl -debug-and-release

set INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include;C:\Program Files\Windows Mobile 6 SDK\PocketPC\Include\Armv4i
set LIB=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\lib\armv4i;C:\Program Files\Windows Mobile 6 SDK\PocketPC\Lib\Armv4i
set PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm;%PATH%

nmake
nmake — делается часов 5, против 20-30 минут как написано в инструкции как-то жестко отличается :)

дальше ставлю qt-vs-addon, запускаю vs2008 захожу QT/QT options/ добавляю путь к c:\qt\4.8.6 и получаю «Default QT/WinCE version = 4.8.6», а поле «Defaul QT/Win version — пусто»
qt-vs-addon пересатвил уже все от 1.1.1 до 1.2.4

Также, когда пытаюсь сделать «QT/Open qt project file (.pro)» — выдает «The following error occured: Cannot find qmake. Make sure you have specified QT version.»

Уже ставил QT4.5.3, 5.4, 5.1 все одно.

переменные path, qdir выдают правильный путь к qmake.
Ясно что руки у меня кривые, но в каком месте?

Пока писал, осознал, видимо нужно отдельно сконфигурировать QT для Win в отдельном каталоге7 (без ключа -xplatform? но это как-то странно ИМХО)

В общем треба помощь :)
0
Сдается мне, WinCE версию нужно ставить в дополнение к нормальной Qt для винды.
Еще можешь попробовать убрать ключ -no-scripttools, тогда, возможно, оно соберет требуемые утилиты (вроде qmake) под винду.
0
Да, так и вышло. Поставил для винды qt-opensource-windows-x86-vs2008-4.8.6.exe и новые проекты с голой формой начали таки компилиться и запускаться и на Win и на WinCE.
В общем правильно говорят: Правильно заданный вопрос уже половина ответа.
0
Так и есть) С кьютом я в последний раз работал еще во времена третьей версии)
0
дабы не флудить здесь, могу я куда-нибудь позадавть глупых вопросы в личку?
0
Можно. Но здесь на них смогут и другие ответить.
0
А есть смысл кьют осваивать? И насколько это трудозатратно? Типа от «Сигналы? Слоты? WTF?» до «Да ща, инфу сольем да графичек замутим». Ну т.е. максисмум что планируется — не особо загоняясь, писать клиенты для разных мк поделий: типо принять инфу, чего-то посчитать, построить график, отправить какие-нибудь настройки обратно и т.п.
Просто для десктопа я за свою жизнь написал только десяток расчетных программ в С++ Билдере, осваиваясь методом тыка, и не особо вникая во все фишки С++, поэтому и спрашиваю, т.к. в этом плане мой кругозор довольно узок.
0
у меня есть девайс на WinCE и на нем стоит QT.
Дейвайсов таких несколько и на них нужно по таймеру запускать плеер с ключами и при изменении координат мыши закрывать его.
0
Насколько я понимаю, это одна из главных фишек кьюта — кроссплатформенность, верно? Типа в полтора клика можно компилить под разные платформы?
0
ну это когда мышка умная и знает куда тыкать, а когда не знает да еще и руки не правильно собраны :) Вот и мучаюсь :) Пока только форму с кнопкой закрыть и получилось скомпилить :)
0
Qt неплох, осваивается без проблем. Сигналы и слоты работавшим с VCL вообще родные, можно сказать)
писать клиенты для разных мк поделий: типо принять инфу
Ну, если тебя не смущает 20 метров потребных для запуска клиента библиотек — почему бы и нет.
0
20 метров это ничто)
Меня больше интересуют минимальные уровень вхождения и время от идеи до результата. Ну и наличие кошерных туториалов, естессно)
0
Довольно популярная либа, так что мануалов должно быть много. Если работал с VCL — то Qt будет вполне понятен. Уровень вхождения у нее тоже невысок, правда, зато у самого С++ он где-то в космосе.
0
В продолжении темы.
22 и 23го все собиралось нормально, и вдруг:
link /LIBPATH:"c:\Qt\4.8.6wm\lib" /NOLOGO /NODEFAULTLIB:OLDNAMES.LIB /DEBUG /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB /OUT:debug\t9.exe @c:\temp\nm17F4.tmp
debug\main.obj : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'THUMB'
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.EXE"' : return code '0x458'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.

как это побороть?
0
Похоже, что ты случайно собрал какой-то из файлов под х86. Пересобери все.
0
Да я все с одним проектом играюсь, типа Hello World :)
Пересобери, всмысле QT? потому что проект я пересобирал раз *цать уже, оставляя в нем только .cpp и .h файлы. Пишут, что вроде XP и VS2008+QT дают глюк, попробую поставить VS2005 и под него собрать QT.
0
вот попробую, если еще раз вылезет подобная ошибка
1. Right click on the project which is giving this error.

2. Goto Project properties -> Linker -> Command Line

3. change MACHINE:ARM to MACHINE:THUMB
0
не помогло.
судя по checksdk -list
отвалился каким-то образом Windows 6 Professional SDK и переустановка его не возвращает…
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.