我正在尝试创建QtQuick扩展,并且无法理解,我如何将它添加到我的应用程序项目中,它是编译,选择,还是用于android,打包在一个apk中?
我有:
dev_root
all.pro
app
app.pro
ext
ext.pro
all.pro
TEMPLATE = subdirs
SUBDIRS += \
app \
ext
我尝试在QtCreator中打开all.pro,app.pro和ext.pro打开,似乎很好。根据我的理解,带有TEMPLATE = subdirs的.pro文件是MSVC解决方案的类比。在MSVC中,我可以简单地指定依赖项,并且在构建exe之前将构建lib,但是在qtCreator中我找不到这样的功能。
我尝试按照net中的写入 - 打开app.pro,右键单击它,“添加库...” - “内部库”。在对话框“选择要链接到的库的项目文件”组合框始终为空,我无法选择我的库。
我做错了什么?
UPD1
通过添加
修复了一些问题ext.subdir = ext
app.depends = ext
进入all.pro
但是当我尝试构建应用程序并将其部署到我的Android设备时,我遇到了错误:
Starting: "D:\Qt\Tools\mingw482_32\bin\mingw32-make.exe" INSTALL_ROOT="F:/work/app-project/build-app-Android_for_armeabi_GCC_4_8_Qt_5_3_1Debug/android-build" install
cd ext/ && ( test -e Makefile || D:/Qt/5.3/android_armv5/bin/qmake.exe F:/work/app-project/app/ext/ext.pro -spec android-g++ CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug -o Makefile ) && D:/Qt/Tools/mingw482_32/bin/mingw32-make -f Makefile install
mingw32-make[1]: Entering directory 'f:/work/app-project/build-app-Android_for_armeabi_GCC_4_8_Qt_5_3_1-Debug/ext'
/usr/bin/sh: D:MinGWmsys1.0workapp-projectbuild-app-Android_for_armeabi_GCC_4_8_Qt_5_3_1-Debugandroid-build/libs/armeabi/: No such file or directory
/usr/bin/sh: D:MinGWmsys1.0workapp-projectbuild-app-Android_for_armeabi_GCC_4_8_Qt_5_3_1-Debugandroid-build/libs/armeabi/: No such file or directory
似乎传递给MSYS的路径包含MS斜杠 - '\',而MSYS简单就吃了它。我怎么能纠正这个?
UPD2
构建扩展过程已修复,但我无法理解,如何使用QtCreator添加依赖项,而不是手动编辑.pro
文件
ext.pro
TEMPLATE = lib
TARGET = ext
QT += qml quick declarative
CONFIG += qt plugin
TARGET = $$qtLibraryTarget($$TARGET)
uri = com.example.ext
# Input
SOURCES += \
Plugin.cpp \
ext.cpp
HEADERS += \
Plugin.h \
ext.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
}