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
Затем создадим 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
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
Код: Выделить всё
/*#if defined(WCHAR_MAX) && (WCHAR_MAX <= USHRT_MAX)
// do nothing, this is test for macro expansion
#endif*/
ВЫ можете попробовать запустить тесты на настольной машине не получится: все-таки 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
Аналогично надо прописать пути и для статических библиотек, для этого выберите в левом списке 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_