|
|||||||
Как настраивать подключение библиотек в *.pro-файле по условию для целевой платформы Android и как делать условную компиляцию под Android
Время создания: 12.03.2018 10:11
Текстовые метки: qt, qml, qmake, pro, android, андроид, десктоп, desktop, target platform, целевая платформа, условная компиляция, настройка библиотеки, архитектура, define
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Инсталляция Qt и сборка проектов
Запись: xintrea/mytetra_syncro/master/base/15208386979nhejf9br4/text.html на raw.github.com
|
|||||||
|
|||||||
При написании кроссплатформенных программ под Android и десктоп с использованием фреймверка Qt, могут возникнуть две следующие задачи:
Чтобы сделать условное подключение библиотеки в *.pro-файле, можно воспользоваться областью действия (scoupe) с именем android, вот так: QT+=quick \ svg \ xml \ gui \ core android { QT+=androidextras } В момент сборки под Android, сработает строка QT+=androidextras. Кстати, можно даже подключать библиотеки в зависимости от целевой архитектуры: android {
equals(ANDROID_TARGET_ARCH, armeabi-v7a) { [doAndroidArmStuff] } equals(ANDROID_TARGET_ARCH, armeabi) { [doAndroidArmeabiStuff] } equals(ANDROID_TARGET_ARCH, x86) { [doAndroidx86Stuff] } } Для исходного кода можно использовать условную компиляцию с проверкой наличия определения Q_OS_ANDROID: #ifdef Q_OS_ANDROID #include "AndroidSpecificClass.h" #endif Точно так же можно настраивать сборку для других целевых платформ. Правда, найти допустимые названия для областей действия (scoupe) в официальной документации Qt не так то просто. По опыту можно сказать, что работают следующие наименования:
UPD: Для определения допустимых имен Scoupe можно зайти в каталог инсталляци Qt, найти в нем каталог, содержащий наименование версии Qt, в нем будут каталоги с поддерживающимися платформами, и в каждом таком каталоге будет подкаталог mkspecs. Например: qt_5_9_2_install_dir/5.9.2/android_armv7/mkspecs/ qt_5_9_2_install_dir/5.9.2/android_x86/mkspecs/ qt_5_9_2_install_dir/5.9.2/gcc_64/mkspecs/ В каждом таком каталоге можно дать следующую команду: grep -E -o -r 'QMAKE_PLATFORM.*?$' Результат будет примерно следующим: dummy/qmake.conf:QMAKE_PLATFORM = dummy_platform openbsd-g++/qmake.conf:QMAKE_PLATFORM = openbsd hpuxi-g++-64/qmake.conf:QMAKE_PLATFORM = hpux android-g++/qmake.conf:QMAKE_PLATFORM = android solaris-cc-64/qmake.conf:QMAKE_PLATFORM = solaris netbsd-g++/qmake.conf:QMAKE_PLATFORM = netbsd ... В правом столбце и перечислены допустимые имена областей действий (scope), которые можно использовать в *.pro-файлах. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|