【发布时间】:2020-05-05 04:56:09
【问题描述】:
我有一个 SubDirs 项目和一个 Qt Quick Application 和几个静态链接到 Qt 应用程序的 c++ 库项目。但我有一个问题在下面。
Qt 版本:Qt 5.14.2
Qt Kit for android 没有显示任何问题。
我在windows上没有任何问题,而且项目会在windows上运行没有错误
我能够在我的 android 设备上运行简单的 Qt Quick Application(Scroll、Stack 和其他模板中的),但是当我添加 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 文件有关。谁能说我该如何解决这个问题?
编辑
我已插入一些 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 for Android 如下:
1-在 C++ 库 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,项目将无法构建!
:-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.
【问题讨论】:
-
D:/QtProjects/build-HokmBazi-Android_ARMv7-Release/JooyaQuickDesign目录显然有问题。也许应该在配置中更改斜杠(改为反斜杠) - 它是 windows。 -
错误信息告诉你错误发生在目录
D:/build-MySubdirProName-Android_for_armeabi_v7a_arm64_v8a_x86_x86_64_Clang_Qt_5_14_2_for_Android-Debug/JooyaAndroid中Makefile的第1068行。我假设这个makefile是由qmake编写的。如果没有更多信息,我们无法告诉您更多信息。 -
@JohnBollinger 我编辑了这个问题,如果你想了解更多信息,我可以再次编辑这个问题。坦克你
-
@JohnBollinger 我已经第二次编辑了这个问题。你能帮我解决这个问题吗?
-
@mohsen,这些编辑很有帮助且适当,但它们表明您的特殊情况太厚了,其中包含来自 Windows / msys 构建环境和 qmake 的详细信息,我无法提供帮助。不过,赏金可能会引起一些关注。我确实觉得“
@msyshack@”出现在整个 makefile 中很可疑。这让我觉得 qmake 构建该文件可能出了问题,但我对这个评估没有信心,也没有关于如何进一步调查的建议。
标签: android qt makefile qt-quick qtquickcontrols2