Cross-compile POCO из Windows для WinCE

    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 для Linux» habrahabr.ru/post/222661

    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.0\VC\ce\bin\x86_arm;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;$(WindowsSdkDir)\bin;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common\Tools;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common\IDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\;$(FrameworkSDKDir)Bin;%PATH%
    set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\include;C:\SAIO_CE60_SDK_R16\include\ARMV4I;C:\SAIO_CE60_SDK_R16\include;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\atlmfc\include;C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SQL Server\Mobile\v3.0
    set LIB=C:\SAIO_CE60_SDK_R16\lib\ARMV4I;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\atlmfc\lib\ARMV4I;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\lib\ARMV4I


    Автоматические создание
    Удобнее использовать утилиту 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.h>
    Для поиска и замены текста автор использовал удобную программу qfreplace 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 появятся файлы статических библиотек
    Мои директории:
    \bin\SAIO_CE60_SDK_R16 (ARMV4I)
    \lib\SAIO_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

    ***

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

    Владислав Хохряков.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 1

      0
      Теги впечатляют, наверника по ним можно будет найти эту инструкцию когда понадобится

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое