Я столкнулся с какой-то странной ошибкой при создании приложения Qt / QML для Android. На данный момент у меня 2 конфигурации: - MinGW 5.3.0 32 бит - Android armeabi v7a (GCC 4.9)
Я могу скомпилировать / запустить версию MinGW без проблем. Но когда я компилирую версию Android, я получаю странную ошибку. И что интересно, ошибка возникает, когда скомпилированную библиотеку нужно переместить в папку DESTDIR. Сама компиляция прошла без проблем.
Подробно:
* .pro файл:
QT += gui widgets
TARGET = MyLib
TEMPLATE = lib
DESTDIR=$$PWD/../lib
SOURCES += \
...
HEADERS += \
...
В настройках проекта make, определенных как `C: \ Users ... \ AppData \ Local \ Android \ android-ndk-r17 \ prebuilt \ windows-x86_64 \ bin \ make, поэтому в консоли я запустил это следующим образом:
> C:\Users\...\AppData\Local\Android\android-ndk-r17\prebuilt\windows-x86_64\bin\make all
Компиляция прошла без проблем, но я все равно получаю сообщение об ошибке:
move libMyLib.so ..\..\MyProject\lib\
process_begin: CreateProcess(NULL, move libMyLib.so "..\..\MyProject\lib ", ...) failed.
make (e=2): The system cannot find the file specified.
make: [..\..\MyProject\lib\libMyLib.so] Error 2 (ignored)
Похоже, что скрипт не может переместить скомпилированный файл в папку назначения. Хорошо, я пробовал сделать это вручную. Здесь, в том же окне консоли, что и я:
move libMyLib.so ..\..\MyProject\lib\
1 file(s) moved.
И файл, к моему удивлению, переместился без проблем! Но почему при выполнении той же команды выполнить скрипт не удалось ??
в Makefile, который определяется как:
MOVE = move
...
-$(MOVE) $(TARGET) ..\..\MyProject\lib\
Итак, похоже, что make использует тот же move, что и я в консоли.
Как мне избежать этой ошибки?
Среда:
Моя среда тоже Windows 10 x64, но я использую Qt 5.11
Более того, я протестировал тот же проект с Qt 5.8, и он отлично выполнил инструкцию move ....
Я спросил у поддержки Qt, и они говорят, что make должен быть от MinGW, т.е. mingw32-make.exe. Но моя конфигурация, которую я все равно не менял, использует make из Android NDK. Я собираюсь это проверить.
Есть старый отчет об этой проблеме Qt, но, к сожалению, нет хороших решений для ее исправления: bugreports.qt.io/browse/QTBUG-35713
Этот отчет об ошибке Qt имеет обходной путь: bugreports.qt.io/browse/QTBUG-69255 Он отмечен как исправленный в Qt 5.11.2, но все еще присутствует в Qt 5.12.0.
Вы нашли способ решения этой проблемы? У меня такая же проблема ... Редактировать: О, я не понимал, что вы спросили об этом только вчера! Думал, это будет более-менее частый вопрос