Я разрабатываю приложение Qt для Symbian. Я должен использовать определенные API для конкретной платформы, которые доступны только на определенной версии S60. Например:Компиляция многоплатформенного приложения Qt для Symbian
-S60 3rd Edition FP1 ЛИЭС: S60_common_lib, S60_3rd_ed_lib
-S60 3rd Edition FP2 ЛИЭС: S60_common_lib, S60_3rd_ed_lib, Symbian_common_lib
-S60 5-издание ЛИЭС: S60_common_lib , S60_5th_ed_lib, Symbian_common_lib
-Symbian^3 ЛИЭС: S60_5th_ed_lib, Symbian3_lib, Sy mbian_common_lib
Как вы можете видеть, некоторые библиотеки разделяются между несколькими платформами. В настоящее время мне приходится составлять целый проект несколько раз, чтобы получить отдельный .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
Так что мои вопросы:
Это единственный способ собрать мультиплатформенной Qt для приложения Symbian (например, есть ли способ заставить его работать только с одним exe)?
Я использую создателя Qt. После компиляции для одной платформы я копирую файлы ресурсов (.exe, .rsc, _reg.rsc) из папки epoc перед компиляцией на следующую платформу (rebuild перезаписывает старые файлы). После того, как вся версия была скомпилирована и собрана в определенном месте, я создам создать один файл sis, который устанавливает другую версию на основе платформы. Этот процесс очень подвержен ошибкам. Есть ли лучший способ сделать это?
Спасибо.
Спасибо за ответ. Я смотрел RLibrary, и, похоже, это полезно для моих собственных DLL. Однако API, который я использую, может быть, например, частным API-интерфейсом платформы. В этом случае я не могу быть уверен в структуре DLL или иметь доступ к файлу .def. – Routa 2010-11-25 07:09:45