Ошибка Makefile Когда я хочу собрать проект для android - PullRequest
2 голосов
/ 05 мая 2020

У меня есть проект SubDirs с Qt Quick Application и несколькими проектами библиотеки c ++, которые статически связаны с приложением Qt, но у меня проблема, описанная ниже.

Версия Qt: Qt 5.14.2

Qt Kit для android не показывает никаких проблем.

У меня нет проблем с windows, и проект будет работать на windows без error

Я могу запустить простое приложение Qt Quick (Scroll, Stack и другое, которое есть в шаблоне) на моем android устройстве, но когда я добавлю библиотеки c ++ и добавлю ссылку на приложение, эта ошибка произойдет.

Ошибка

:-1: error: [install_target] Error 1

Вывод компиляции


12:18:32: The process "D:\SDK\ndk-bundle\prebuilt\windows-x86_64\bin\make.exe" exited normally.
12:18:32: Starting: "D:\SDK\ndk-bundle\prebuilt\windows-x86_64\bin\make.exe" "INSTALL_ROOT=D:\build-MySubdirProName-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_2_for_Android-Debug\android-build" install
cd JooyaAndroid\ && ( if not exist Makefile C:\Qt\5.14.2\android\bin\qmake.exe -o Makefile D:\QtProjects\JooyaAndroid\JooyaAndroid.pro -spec android-clang "CONFIG+=debug" "CONFIG+=qml_debug" "ANDROID_ABIS=armeabi-v7a" ) && D:/SDK/ndk-bundle/prebuilt/windows-x86_64/bin/make -f Makefile install
make[1]: Entering directory 'D:/build-MySubdirProName-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_2_for_Android-Debug/JooyaAndroid'
The filename, directory name, or volume label syntax is incorrect.
make[1]: *** [Makefile:1068: install_target] Error 1
make[1]: Leaving directory 'D:/build-MySubdirProName-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_2_for_Android-Debug/JooyaAndroid'
make: *** [Makefile:74: sub-JooyaAndroid-install_subtargets] Error 2
12:18:34: The process "D:\SDK\ndk-bundle\prebuilt\windows-x86_64\bin\make.exe" exited with code 2.
Error while building/deploying project MySubdirProName(kit: Android for armeabi-v7a,arm64-v8a,x86,x86_64 (Clang Qt 5.14.2 for Android))
When executing step "Copy application data"
12:18:34: Elapsed time: 00:33.

Я думаю, что ошибка связана с Makefile file.Может ли кто-нибудь сказать, как я могу решить эту проблему?

Edit

Я вставил некоторую строку Makefile для получения дополнительной информации об ошибке:


1065 ####### Install
1066 
1067 install_target: all FORCE
1068    @if not exist C:$(INSTALL_ROOT:@msyshack@%=%)\Qt\5.14.2\android\plugins\generic mkdir C:$(INSTALL_ROOT:@msyshack@%=%)\Qt\5.14.2\android\plugins\generic & if not exist C:$(INSTALL_ROOT:@msyshack@%=%)\Qt\5.14.2\android\plugins\generic exit 1
1069    $(QINSTALL) $(TARGET) C:$(INSTALL_ROOT:@msyshack@%=%)\Qt\5.14.2\android\plugins\generic\$(TARGET)
1070    $(RANLIB) C:$(INSTALL_ROOT:@msyshack@%=%)\Qt\5.14.2\android\plugins\generic\$(TARGET)
1071 
1072 uninstall_target: FORCE
1073    -$(DEL_FILE) C:$(INSTALL_ROOT:@msyshack@%=%)\Qt\5.14.2\android\plugins\generic\$(TARGET)
1074    -$(DEL_DIR) C:$(INSTALL_ROOT:@msyshack@%=%)\Qt\5.14.2\android\plugins\generic 

И дополнительная информация о строке 1068 заключается в том, что в C:\Qt\5.14.2\android\plugins\ есть несколько папок, но папка generic не существует .

Редактировать 2

После нескольких дней попыток я добился небольшого успеха. Я могу построить проект subdirs, в котором есть один C++ Library и один Qt Quick Application для Android следующим образом:

1-In C ++ Library pro файл Сначала у меня была конфигурация ниже И я создаю проект, но у меня была ошибка выше:

QT -= gui

TEMPLATE = lib
CONFIG += staticlib

CONFIG += c++11

DEFINES += QT_DEPRECATED_WARNINGS


SOURCES += \
    summer.cpp

HEADERS += \
    summer.h

# Default rules for deployment.
unix {
    target.path = $$[QT_INSTALL_PLUGINS]/generic
}
!isEmpty(target.path): INSTALLS += target

2 - Затем я изменил файл pro, как показано ниже:

CONFIG += dll

3- Я нажал кнопку сборки, и проект успешно построен, и файл Apk находится в выходной папке

Но я не знаю, что происходит. Учитывая вышесказанное, я хочу знать, как решить мою проблему.

Когда я меняю Config += dll без проекта сборки на Config += staticlib, появляется ошибка ниже, и проект не будет построен без сначала staticlib, а затем dll config!

:-1: error: No rule to make target 'D:\QtProjects\MyQtProjects\build-FirstSubdirProject-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_QtForAndroid_32ca93-Debug\FirstQtQuickApp\..\MyFirstLibrary\libMyFirstLibrary.a', needed by 'libFirstQtQuickApp_armeabi-v7a.so'.  Stop.

Ответы [ 2 ]

1 голос
/ 16 мая 2020

Я нахожу решение. Когда я создаю новый проект библиотеки C ++ в Qt Creator, он создает профессиональный файл с содержимым ниже.

QT -= gui

TEMPLATE = lib
CONFIG += staticlib

CONFIG += c++11

DEFINES += QT_DEPRECATED_WARNINGS


SOURCES += \
    testlibrary.cpp

HEADERS += \
    testlibrary.h

# Default rules for deployment.
unix {
    target.path = $$[QT_INSTALL_PLUGINS]/generic
}
!isEmpty(target.path): INSTALLS += target
* 1003 проблема снята

# Default rules for deployment.
unix {
    target.path = $$[QT_INSTALL_PLUGINS]/generic
}
!isEmpty(target.path): INSTALLS += target
0 голосов
/ 10 мая 2020
The filename, directory name, or volume label syntax is incorrect.

Проверьте свои имена файлов. Возможно, из-за слишком длинного пути к файлу с ошибкой (источнику или объекту). Такая ошибка есть только в windows, для систем на основе unix такого ограничения нет.

Эта ошибка также вызвана слишком длинным списком аргументов ( например, слишком длинные объекты для связывания )

...