Cross-compile POCO из Windows для WinCE

в 13:12, , рубрики: c++, Программирование

POCO — легковесный, мультиплатформенный open-source набор библиотек и классов С++, облегчающих написание мультиплатформенного ПО.
Выпускается под Boost Software License.
Дополнительные сведения о POCO:
pocoproject.org/features.html
ru.wikipedia.org/wiki/POCO
Прекрасно организованная документация по структуре классов доступна в html-онлайн, html-оффлайн.
Документация по основным возможностям с примерами использования — в pdf: pocoproject.org/documentation/index.html

POCO имеет богатейший функционал — очень многое — всё-всё, что нужно для счастливой жизни C++ программиста! Работает инструментарий отлично, имеет продуманный API.

POCO собирается для большого числа ОС, в т.ч. Desktop Windows, Windows CE, Linux.

По своему опыту замечу, что POCO для этих ОС собирается без проблем.
Методику кроссплатформенной сборки из Windows для этих ОС постараюсь вам, уважаемые с++ разработчики, донести в своих трёх статьях «Cross-compile POCO из Windows».

Cross-compile POCO из Windows для WinCE custom SDK

Метод, освещённый здесь, разрабатывался:
— для Windows CE SDK терминала XAC (ARM9, Windows CE 6.0)
— хост-машина Windows 7 64
— сборка POCO из окружения Visual Studio 2008
— POCO Basic Edition 1.4.6p4

Подготовка IDE и SDK

Небольшой ликбез:
-по информации, которой я располагаю, для разработки и отладки под Windows CE используется VS2005 или VS2008
-отладка программы с устройствами Windows CE выполняется при помощи специального инструмента ActiveSync «Центр устройств Windows Mobile»
Подробнее есть в вики: ru.wikipedia.org/wiki/ActiveSync.Работать с ActiveSync просто — подключил устройтсво Windows Mobile по USB к хост-машине, ActiveSync находит устройство и вперёд. Теперь можно открыть его файловую систему в проводнике или отлаживать свою программу из Visual Studio 2008.

1. Скачать и последовательно установить следующие программы:
Microsoft Visual Studio 2008 Professional «Visual Studio 2008 Professional.zip» rutracker.org
Microsoft Visual Studio 2008 sp1 «VS90sp1-KB945140-ENU.exe» www.microsoft.com/en-us/download/details.aspx?id=10986
Windows Mobile 6 SDK «Windows Mobile 6 Professional SDK Refresh.msi» www.microsoft.com/en-us/download/details.aspx?id=6135
Windows Mobile 6.1 SDK «Windows Mobile 6.1 Emulator Images» www.microsoft.com/en-us/download/details.aspx?id=16182

2. Скачать и установить Custom SDK для вашего устройства.
У меня, например: «SAIO_CE60_SDK_R16.msi» я скачал её у производителя аппаратуры.
НО! Если специальное SDK найти не удаётся, можно запускать программы, собранные под стандартные Windows Mobile SDK, скачанные у Microsoft.
Стандартное SDK должно быть такой же версии Windows CE как и ваше устройство.

3. Проверить обнаружение устройства.
Подключим устройство по USB к нашему компьютеру, когда устройство обнаружится на USB, ActiveSync должен автозапуститься. В Windows 7 в категории «Компьютер» должна появится подкатегория «Портативные устройства». Через неё можно просмотреть файловую систему устройства WindowsCE.

4. Проверить запуск программ и отладку на устройстве.
Наше устройство должно быть подключено по пункту 3. Открываем VS2008 и мастером создаём проект «VisualC++»->«Win32 Smart Device Project».
image
Компилируем и запускаем его по нажатию клавиши F5. Наше тестовое приложение Win32 должно успешно запуститься на устройстве.

Подготовка пакетного файла окружения SDK нашего устройства

Сборка POCO будет производиться из консоли. Перед сборкой требуется настроить переменные окружения на окружение SDK нашего устройства.
Пакетный файл можно написать вручную, по образцу, либо сформировать автоматически.

Образец

@echo off
echo Environment Selection:SAIO_CE60_SDK_R16 (ARMV4I)
set PATH=C:Program Files (x86)Microsoft Visual Studio 9.0VCcebinx86_arm;C:Program Files (x86)Microsoft Visual Studio 9.0VCbin;$(WindowsSdkDir)bin;C:Program Files (x86)Microsoft Visual Studio 9.0Common7Tools;C:Program Files (x86)Microsoft Visual Studio 9.0Common7IDE;C:Program Files (x86)Microsoft Visual Studio 9.0CommonTools;C:Program Files (x86)Microsoft Visual Studio 9.0CommonIDE;C:Program Files (x86)Microsoft Visual Studio 9.0;$(FrameworkSDKDir)Bin;%PATH%
set INCLUDE=C:Program Files (x86)Microsoft Visual Studio 9.0VCceinclude;C:SAIO_CE60_SDK_R16includeARMV4I;C:SAIO_CE60_SDK_R16include;C:Program Files (x86)Microsoft Visual Studio 9.0VCceatlmfcinclude;C:Program Files (x86)Microsoft Visual Studio 9.0SmartDevicesSDKSQL ServerMobilev3.0
set LIB=C:SAIO_CE60_SDK_R16libARMV4I;C:Program Files (x86)Microsoft Visual Studio 9.0VCceatlmfclibARMV4I;C:Program Files (x86)Microsoft Visual Studio 9.0VCcelibARMV4I

Автоматические создание

Удобнее использовать утилиту checksdk.exe из набора утилит инструментария Qt. Эта утилита используется для вывода имён установленных в системе Sdk и формирования скрипта установки переменных окружения под выбранный SDK. Как раз то, что нужно.
— Качаем архив Qt для WindowsCE qt-project.org/downloads, на момент написания статьи это версия «Qt libraries 4.8.6 for Windows CE (269 MB) (Info)»
-распаковываем его куда-нибудь, и в директории /bin находим утилиту checksdk.exe
-открываем командную оболочку VS2008 «Visual Studio 2008 x64 Cross Tools Command Prompt»
image

-устанавливаем текущим каталог с утилитой checksdk.exe
-запускаем checksdk.exe -list и видим список установленных SDK:
image

-формируем пакетный файл окружения для выбранного SDK:
checksdk.exe -sdk "SAIO_CE60_SDK_R16 (ARMV4I)" -script wm6.bat

Подготовка POCO

1. Подготовить директорию с POCO:
-скачать по адресу pocoproject.org/download/index.html архив POCO последней стабильной версии Basic Edition. По кнопке «Sources for Linux, OS X, etc.». На момент написания статьи архив — poco-1.4.6p4.tar.gz
-разархивировать в отдельную директорию. К примеру, с помощью WinRAR и в директорию C:/poco/poco-1.4.6p4-wince-SAIO_CE60_SDK_R16 Я через тире указываю имя SDK для отличия версий POCO.

2. Скопировать пакетный файл окружения SDK в корень директории POCO.

3. С помощью программы поиска и замены текста, в директории POCO заменить:
-все вхождения строки Digi JumpStart (ARMV4I) на имя вашего Custom SDK, пример: SAIO_CE60_SDK_R16 (ARMV4I)
-все вхождения строки: <locale> на строку <locale.h>
Для поиска и замены текста автор использовал удобную программу qfreplace http://i-vd.org.ru/soft/qfreplace.shtml

4. Установка для сборки статических и динамических библиотек.
Она зависит от аргументов buildwin.
В корневой директории POCO имеется пакетный файл build_CE_vs90.cmd, который запускает buildwin с аргументами для сборки только статических библиотек.
Для сборки и статических и динамических библиотек, создаёте новый пакетный файл,
например с именем build_CE_vs90-all.cmd следующего содержимого:
@echo off
buildwin 90 build all both WinCE samples

Сборка POCO

1. Открыть консоль из состава VS2008. У меня она имеет имя Visual Studio 2008 x64 Win64 Command Prompt
image
все дальнейшие шаги будут выполняться из этой консоли

2. Установить директорию с POCO текущей:
cd C:/poco/poco-1.4.6p4-wince-SAIO_CE60_SDK_R16

3. Установить окружение SDK. Запустить пакетный файл:
wm6.bat

4. Запустить сборку POCO. Запустить пакетный файл:
build_CE_vs90-all.cmd

В результате сборки создаются директории с результатами сборки:
binимя_нашего_sdk появятся файлы динамических библиотек
libимя_нашего_sdk появятся файлы статических библиотек
Мои директории:
binSAIO_CE60_SDK_R16 (ARMV4I)
libSAIO_CE60_SDK_R16 (ARMV4I)

Источники информации

«POCO C++ Libraries GNU Make Build System» pocoproject.org/docs/99150-GMakeBuildNotes.html
«Building On Windows» pocoproject.org/docs/00200-GettingStarted.html

***

Готовые инструментарии с++ делают наш труд более приятным и более плодотворным. Успехов, уважаемые коллеги!

Владислав Хохряков.

Автор: Tovaryh

Источник

Поделиться

* - обязательные к заполнению поля