如何在QtCreator中将库添加到app依赖列表

时间:2014-06-30 04:47:09

标签: android qt shared-libraries qt-creator qtquick2

我正在尝试创建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
}

0 个答案:

没有答案