Сбой компиляции плагина расширения для Android из-за того, что qmldir не найден

#android #qt #qml #qtquick2 #qt5.3

#Android #qt #qml #qtquick2 #qt5.3

Вопрос:

У меня есть плагин расширения QML, созданный мастером Qt Creator. Когда я пытаюсь скомпилировать его для Android, компиляция завершается ошибкой с сообщением:

mingw32-make[1]: ввод каталога ‘F:/work/app-project/build-app-Android_for_armeabi_GCC_4_8_Qt_5_3_1-Debug/extention ‘
mingw32-make[1]: *** Нет правила для создания цели ‘F:workapp-projectbuild-app-Android_for_armeabi_GCC_4_8_Qt_5_3_1-Debugextentionqmldir ‘, требуется ‘libextention.so ‘. Остановка.

Что не так с файлом расширения .pro ? Операционная система хоста — Windows 7, Qt — 5.3.1

 TEMPLATE = lib
TARGET = extention
QT  = qml quick declarative
CONFIG  = qt plugin

TARGET = $$qtLibraryTarget($$TARGET)
uri = com.example.extention

# Input
SOURCES  = 
    Plugin.cpp 
    extention.cpp

HEADERS  = 
    Plugin.h 
    extention.h


OTHER_FILES = qmldir

!equals(_PRO_FILE_PWD_, $$OUT_PWD) {
    copy_qmldir.target = $$OUT_PWD/qmldir
    copy_qmldir.depends = $$_PRO_FILE_PWD_/qmldir
    copy_qmldir.commands = $(COPY_FILE) "$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)" "$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)"
    QMAKE_EXTRA_TARGETS  = copy_qmldir
    PRE_TARGETDEPS  = $$copy_qmldir.target
}

qmldir.files = qmldir
unix {
    installPath = $$[QT_INSTALL_QML]/$$replace(uri, \., /)
    qmldir.path = $$installPath
    target.path = $$installPath
    INSTALLS  = target qmldir
}
  

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

1. Привет. У меня точно такая же проблема, но, похоже, никто не ответил на этот вопрос. Можете ли вы опубликовать решение в качестве ответа здесь, если оно у вас есть?

2. Существует решение для сборки двоичных файлов в исходный каталог, а не в другой каталог. Извините, я забыл точную терминологию.

Ответ №1:

Используйте QRC вместо копирования .qml-файлов в свой каталог сборки. Qt обработает все зависящие от системы проблемы за вас.