Компиляция и использование STLPort для Windows Mobile 5.0

Всё о КПК (PPC)

Модератор: чипега

Аватара пользователя
Blaze
Информатик-аналитик
Информатик-аналитик
Сообщения: 8933
Зарегистрирован: 24.05.2007 17:23
Модель телефона: POCO X3 Pro 6/128
Прошивка: crDroid v7.7
Sat-ресивер: Tiviar Mini HD
Откуда: Данков
Контактная информация:

Компиляция и использование STLPort для Windows Mobile 5.0

Непрочитанное сообщение#1 » Blaze » 26.06.2009 17:26

Компиляция и использование STLPort для Windows Mobile 5.0.

STLPort и Windows Mobile.

Компиляция и использование STLPort для Windows Mobile 5.0.

Думаю, не открою большого секрета, если скажу, что поставляемая вместе с Visual Studio 2005 версия STL для Windows Mobile весьма обрезана, если не сказать большего. К сожалению, готового решения как откомпилировать STLPort для Windows Mobile тоже не видно. В этой статье я рассмотрю ряд простых шагов, позволяющих откомпилировать STLPort и использовать его в проектах.
Я рассматриваю последнюю на момент написания статьи версию STLPort 5.1.4. Скачать ее можно будет отсюда: http://sourceforge.net/project/showfile ... _id=544939 Итак, после скачивания, исходников, их необходимо распаковать скажем в папку C:\Include. Для простоты изложения введем небольшую переменную STL_PATH, которая будет означать путь инсталляции (куда вы распаковали файлы) STLPort. В моем случае это C:\Include\STLport-5.1.4. Для компиляции STLPort перейдем в каталог STL_PATH\build\lib. Создадим простейший bat-файл, который позволит нам запускать cmd в текущем каталоге:

Код: Выделить всё

rem command.bat
cmd
rem end bat 
Для тех кто не знает, строки начинающиеся с rem - это комментарии.

Затем создадим WinMobile.bat, который позволит задать основные параметры компиляции - тип процессора, пути к заголовочным файлам, статическим библиотекам и прочим бинарникам (вроде компилятора).
В моем случае Microsoft Visual Studio 2005 установлена по пути: C:\Program Files\Microsoft Visual Studio 8, а Windows Mobile 5.0 Pocket PC SDK по адресу: C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK. Эти адреса, являются стандартными; и у вас, почти наверняка, они те же. Итак, представляю bat-файл:

Код: Выделить всё

rem WinMobile.bat
cls
set OSVERSION=WCE500
set PLATFORM=Windows Mobile 5.0 Pocket PC SDK
set TARGETCPU=ARMV4I
rem disable buffer security check
set CL=/GS-

set CC=cl.exe
set VSINSTALLDIR=C:\Program Files\Microsoft Visual Studio 8
set SDKROOT=C:\Program Files\Windows CE Tools

set PATH=%VSINSTALLDIR%\VC\ce\bin\x86_arm;%VSINSTALLDIR%\VC\bin;%VSINSTALLDIR%\Common7\IDE;%PATH%
set PLATFORMROOT=%SDKROOT%\%OSVERSION%\%PLATFORM%

rem add libs and includes from the SDK
set INCLUDE=%PLATFORMROOT%\include\%TARGETCPU%
set LIB=%PLATFORMROOT%\lib\%TARGETCPU%

rem add libs that came with VC8
rem Note: there are more libs and includes under ce\atlmfc, not sure if these are needed.
set LIB=%LIB%;%VSINSTALLDIR%\VC\ce\lib\%TARGETCPU%

rem end WinMobile.bat 
Теперь, подготовительный этап завершен и можно приступить к процессу компиляции. Двумя кликами по command.bat запускаем консоль. И вводим последовательность команд:
1. Установка переменных окружения для компиляции под Windows Mobile
> WinMobile
2. Конфигурирование. evc8 - компилятор Visual C++ 8.0 для Windows CE.
configure -c evc8 -x
3. Собственно компиляция
nmake /fevc.mak
4. Установка откомпилированных библиотек (копирование их в STL_PATH\Lib)
nmake /fevc.mak install

Итак, теперь дело за малым, не закрывая консоли (если успели закрыть повторите первые 2 пункта), откомпилируем модульные тесты и запустим их, чтобы проверить насколько корректно у нас работает STLPort:

Код: Выделить всё

>cd ..\test\unit
>nmake /fevc.mak install 
Для успешной компиляции пришлось закомментировать в файле C:\Include\STLport-5.1.4\test\unit\cwchar.cpp

Код: Выделить всё

/*#if defined(WCHAR_MAX) && (WCHAR_MAX <= USHRT_MAX)
// do nothing, this is test for macro expansion
#endif*/ 
Теперь откомпилированные тестовые приложения лежат в STL_PATH\bin
ВЫ можете попробовать запустить тесты на настольной машине не получится: все-таки Intel не ARM. На девайсе тоже неинтересно: приложения консольные. Значит для запуска на девайсе нам потребуется драйвер консоли, скачать его можно здесь: PocketConsole http://www.symbolictools.de/public/pock ... wnload.htm
При этом, чтобы PocketConsole нормально работал под Windows Mobile 5.0 устанавливаем в 0 ключ реестра HKEY_LOCAL_MACHINE\Drivers\Console\OutputTo

Все теперь можно копировать и тестировать. Там же можно скачать cmd для Pocket PC и написать тестирующий батник, который выведет результаты тестирования в result.txt:

Код: Выделить всё

rem test.bat
stl_test_unitd_static.exe -f=result.txt 
Теперь необходимо прописать пути в Visual Studio, чтобы она использовала STLPort. Для этого в диалоговом окне Options откроем Project and Solutions => VC++ Directories. В выпадающем списке слева выберем нужную платформу: Windows Mobile 5.0 Pocket PC SDK, а справа выберем Include. Добавим в самое начало путь к заголовочным файлам STLPort: STL_PATH\stlport. У вас должно получится примерно так:
Изображение
Аналогично надо прописать пути и для статических библиотек, для этого выберите в левом списке Lib и добавьте строку, вроде: STL_PATH\lib\evc8-arm

Кроме того, в свойствах проекта, в C/C++=>Preprocessor нужно добавить пару определений препроцессора.
Для Debug-проекта:
$(INSTRUCTIONSET);__STL_DEBUG
А для Release просто: $(INSTRUCTIONSET)

Скачать примеры BAT-файлов можно отсюда: STLPort-WM5-BAT.zip (1KB)

Вот и все. Приятного использования STLPort!

Александр Игнатьев,
_http://www.vestace.ru_

Ответить