Компиляция мультиплатформенного приложения Qt для Symbian - PullRequest
4 голосов
/ 24 ноября 2010

Я занимаюсь разработкой приложения Qt для Symbian.Я должен использовать определенные API для конкретной платформы, которые доступны только в определенной версии S60.Например:

-S60 3-е издание библиотеки FP1: S60_common_lib, S60_3rd_ed_lib

-S60 3-е издание библиотеки FP2: S60_common_lib, S60_3rd_ed_li_, Symbian_common1009 *

-S60 5-е издание libs: S60_common_lib, S60_5th_ed_lib, Symbian_common_lib

-Symbian ^ 3 libs: S60_5th_ed_lib * 101ian * _lib * Symbian3_com_lib, Symbian 3_lib, Symbian* Как видите, некоторые библиотеки используются несколькими платформами.В настоящее время мне приходится компилировать весь проект несколько раз, чтобы получить отдельный .exe, ресурсы и т. Д. Для всех различных платформ S60.Я делаю это, определяя идентификатор для каждой платформы в файле Pro.Например:

# symbian 3
DEFINES += symbian_3_build
symbian:LIBS += # ...
# S60 3.1
# DEFINES += s60_fp1
# LIBS...

И в реальном коде у меня есть что-то вроде:

#ifdef symbian_3_build
    #include <some_s3_header.h>
#elseif s60_fp1
    #include <some_fp1_header.h>
#endif

Итак, мои вопросы:

  1. Этоединственный способ компилировать мультиплатформенное приложение Qt для Symbian (например, есть ли способ заставить его работать только с одним exe-файлом)?

  2. Я использую Qt Creator.После компиляции для одной платформы я копирую файлы ресурсов (.exe, .rsc, _reg.rsc) из папки epoc перед компиляцией на следующую платформу (перезаписываю старые файлы).После того, как все версии будут скомпилированы и собраны в определенном месте, я создам один файл sis, который устанавливает разные версии в зависимости от платформы.Этот процесс очень подвержен ошибкам.Есть ли лучший способ сделать это?

Спасибо.

1 Ответ

3 голосов
/ 24 ноября 2010

Это единственный способ компилировать мультиплатформенное приложение Qt для Symbian (например, есть ли способ заставить его работать только с одним exe-файлом)?

Это действительно зависит от того, какой самый большой общий знаменатель в ваших конфигурациях.

По крайней мере, вам не нужно изменять файл .pro для каждой конфигурации. Просто укажите дополнительные значения CONFIG в командной строке qmake, например, qmake CONFIG+=symbian3, а затем содержит symbian3 { ... } блоков в файле .pro для частей, специфичных для symbian3.

Если вы хотите один двоичный файл и , различия находятся на уровне двоичной совместимости, например вы ссылаетесь на функции в библиотеках DLL, которых нет в какой-либо цели, вы можете разделить эти вызовы функций на свой собственный компонент адаптера, который динамически загружает необходимые библиотеки с собственными RLibrary::Load(), RLibrary::Lookup() и т. д., в зависимости от базовой версия платформы. Один из способов получить версию платформы во время выполнения - QSysInfo::s60Version().

...