Windows CE - Работа с пользовательскими SDK
При работе с пользовательским SDK для Windows CE, Qt предоставляет лёгкий способ добавить его поддержку в ваше среду разработки. Далее изложено руководство, которое освещает, как создавать спецификацию для Qt на платформах Windows CE.
Создание пользовательской спецификации сборки
Создаём подкаталог в каталоге mkspecs каталога Qt. Новые спецификации для Qt для Windows CE следуют следующим соглашениям именования:
Использование этого соглашения делает возможным для qmake идентифицировать, что вы собираете Qt для Windows CE, и настроить соответственно процесс компиляции.
Создаются файлы qmake.conf и qplatformdefs.h внутри каталога новой спецификации. Рассмотрим реализацию других спецификаций Windows CE, включённых в каталог mkspecs, чтобы посмотреть, что требуется для успешной сборки Qt для Windows CE.
Опции тонкой настройки
По сравнению с настольными версиями, Qt для Windows CE необходимы две дополнительные опции:
- CE_SDK указывает имя SDK.
- CE_ARCH указывает информацию о целевой архитектуре.
Рассмотрим пример конфигурации для Windows Mobile 5 с Pocket PC SDK:
Примечание: qmake использует эту информацию для сборки корректного файла проекта Visual Studio. Вам нужно убедиться, что они такие же для конфигурации с пользовательским SDK, в противном случае вы не сможете скомпилировать или отладить ваш проект в Visual Studio.
Кроме того, большая часть Windows CE SDK используют дополнительные опции компилятора. Указать это можно расширить значение DEFINES.
Например, Windows Mobile 5 для Pocket PC, переменная DEFINES расширяется следующим образом:
mkspec может требовать дополнительной конфигурации для использования в Visual Studio, в зависимости от Windows CE SDK. Пример выше определяет _M_ARM. Это определение доступно внутри Visual Studio. Поэтому компилятор предупредит вас о переопределении на этапе сборки. Эти предупреждения можно вывести на экран добавив файл default_post.prf, содержащий следующие строки, внутри подкаталога.
Окружение кросс-компиляции для пользовательского SDK
Qt для Windows CE предоставляет вспомогательный скрипт, setcepaths.bat, который подготавливает окружение в командной строке для кросс-компиляции. Однако, в пользовательских SDK, инструмент checksdk предоставляется для идентификации окружения, поэтому Qt компилируется успешно.
checksdk генерируется во время этапа выполнения команды configure и допускает следующие опции:
- list: Возвращается список всех доступных Windows CE SDK. (Этот список может содержать один или более SDK не поддерживаемых на Qt для Windows CE, например, Pocket PC 2003.)
- sdk: Параметр для указания SDK. Возвращает настройку переменных окружения, которые должны быть установлены для кросс-компиляции Qt.
- script: Сохраняет вашу настройку в файле .bat. Это упрощает процесс переключения окружений при следующих загрузках командной строки.
Компиляция Qt для пользовательского SDK
Windows CE хорошо настраиваема, однако не исключается, что некоторые SDK имеют настройки, не поддерживающие возможности. В зависимости от конфигурации SDK, Qt может не скомпилироваться в своей стандартной конфигурации, поскольку Qt для Windows CE спроектирована для совместимости со стандартной установкой SDK.
Однако, можно исключить возможности Qt и создать версию, которая компилируется для заданного SDK.
Более подробная информация по не поддерживаемым возможностям можно найти в документации QFeatures.
Создание приложений Qt на пользовательском устройстве
Иногда, устройство Windows CE создаётся с конфигурацией, отличающейся от соответствующей конфигурации SDK. В этом случае, символы которые будут доступны на этапе линковки будут отсутствовать в библиотеках времени выполнения.
К сожалению, операционная система не предоставляет сообщение об ошибке, в котором упоминаются отсутствующие символы. Вместо этого появится окно сообщения со следующим текстом:
app.exe is not a valid CE application!
Чтобы найти отсутствующие символы, вам нужно создать временное приложение, которое попытается динамически загрузить библиотеки Qt для Windows CE используя LoadLibrary. Для этого можно использовать следующий код:
Раз у вас есть скомпилированное и распространённое приложение, также как и библиотеки Qt, запустим удаленный отладчик. Отладчик будет выводить порядковый номер наразрешённого символа.
Ищите части Qt, которые зависят от этих функций, и отключите их используя функциональность QFeatures.
Исходя из нашего опыта, когда приложения Qt не запускаются в Windows CE, то это обычно результат пропуска символов для следующих классов или возможностей:
Пожалуйста, за информацией в каком порядке и как вы можете создать их обратитесь к документации Microsoft здесь. Информация о получении доступа к соответствующему символьному имени для заданного порядкового значения можно также найти в документации Microsoft.
Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) |
Торговые марки |
Qt 4.5.3 |
|