diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2013-10-28 20:12:54 -0300 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2013-10-29 00:09:20 +0100 |
commit | 28bc3e761e7340bf92e45dbfa3325ae2cbe3c75f (patch) | |
tree | dc8bb07705504cdb7bbce3c3d8b8112b1168fe90 /examples/uml | |
parent | 332d64c08719a42c7ace5bf324744b786109b5bb (diff) |
Fix plugin's DESTDIR and loading
Change-Id: I11318205d1347acb38ba0df905b638e0ad958724
Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'examples/uml')
8 files changed, 40 insertions, 27 deletions
diff --git a/examples/uml/duse-mt/duse-mt.pri b/examples/uml/duse-mt/duse-mt.pri index 3c0ddb20..8b547ac5 100644 --- a/examples/uml/duse-mt/duse-mt.pri +++ b/examples/uml/duse-mt/duse-mt.pri @@ -12,3 +12,4 @@ INCLUDEPATH += \ DUSEMT_APP_TARGET = duse-mt DUSEMT_APP_PATH = $$DUSEMT_SOURCE_TREE/bin +DUSEMT_PLUGIN_PATH = $$DUSEMT_LIBRARY_PATH/plugins diff --git a/examples/uml/duse-mt/src/app/shell/mainwindow.cpp b/examples/uml/duse-mt/src/app/shell/mainwindow.cpp index 89b0d923..b8a837e4 100644 --- a/examples/uml/duse-mt/src/app/shell/mainwindow.cpp +++ b/examples/uml/duse-mt/src/app/shell/mainwindow.cpp @@ -719,13 +719,19 @@ void MainWindow::loadPlugins() if (plugin && (metaModelPlugin = qobject_cast<QMetaModelPlugin *>(plugin))) _loadedPlugins.insert(loader.metaData().value(QString::fromLatin1("MetaData")).toObject().value(QString::fromLatin1("MetaModelNamespaceUri")).toString(), QPair<QMetaModelPlugin *, QJsonObject>(metaModelPlugin, loader.metaData().value(QString::fromLatin1("MetaData")).toObject())); } - QDir dusePluginsDir(pluginPath); - dusePluginsDir.cd("plugins"); - foreach (QString fileName, dusePluginsDir.entryList(QDir::Files)) { - QPluginLoader loader(dusePluginsDir.absoluteFilePath(fileName)); + } + QDir dusePluginsDir(QCoreApplication::applicationDirPath()); + dusePluginsDir.cd("../lib/duse-mt/plugins"); + const QFileInfoList subdirs = dusePluginsDir.entryInfoList(QDir::Dirs|QDir::NoDotAndDotDot); + foreach (const QFileInfo &subdir, subdirs) { + QDir dusePluginSubDir(subdir.absoluteFilePath()); + foreach (QString fileName, dusePluginSubDir.entryList(QDir::Files)) { + QPluginLoader loader(dusePluginSubDir.absoluteFilePath(fileName)); QObject *plugin = loader.instance(); - if (plugin && (dusePlugin = qobject_cast<DuSE::IPlugin *>(plugin))) + if (plugin && (dusePlugin = qobject_cast<DuSE::IPlugin *>(plugin))) { + qDebug() << "Achei duse-mt plugin:" << dusePluginsDir.absoluteFilePath(fileName); dusePlugin->initialize(core); + } } } } diff --git a/examples/uml/duse-mt/src/duse-mt-plugin.pri b/examples/uml/duse-mt/src/duse-mt-plugin.pri new file mode 100644 index 00000000..50e76593 --- /dev/null +++ b/examples/uml/duse-mt/src/duse-mt-plugin.pri @@ -0,0 +1,20 @@ +include(../duse-mt.pri) + +isEmpty(PROVIDER) { + PROVIDER = QtProject +} else { + LIBS += -L$$DUSEMT_PLUGIN_PATH/QtProject +} + +DESTDIR = $$DUSEMT_PLUGIN_PATH/$$PROVIDER +LIBS += -L$$DESTDIR + +QMAKE_RPATHDIR += \$\$ORIGIN +QMAKE_RPATHDIR += \$\$ORIGIN/.. +QMAKE_RPATHDIR += \$\$ORIGIN/../.. +DUSEMT_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":") +QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${DUSEMT_PLUGIN_RPATH}\' +QMAKE_RPATHDIR = + +TEMPLATE = lib +CONFIG += plugin plugin_with_soname diff --git a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspector.pro b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspector.pro index e9ea98f7..7dddc0f9 100644 --- a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspector.pro +++ b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspector.pro @@ -4,26 +4,9 @@ # #------------------------------------------------- -QT += core - -TARGET = modelinspector -TEMPLATE = lib -CONFIG += plugin - -DESTDIR = ../ +include(../../duse-mt-plugin.pri) SOURCES += modelinspectorplugin.cpp HEADERS += modelinspectorplugin.h OTHER_FILES += modelinspector.json - -LIBS += -lduseinterfaces - -unix:!symbian { - maemo5 { - target.path = /opt/usr/lib - } else { - target.path = /usr/lib - } - INSTALLS += target -} diff --git a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp index 552e8ef9..33dd708c 100644 --- a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp @@ -40,7 +40,7 @@ ****************************************************************************/ #include "modelinspectorplugin.h" -#include "../../interfaces/iuicontroller.h" +#include <interfaces/iuicontroller.h> #include <QtWidgets/QPushButton> diff --git a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h index 386647e8..e4b72c72 100644 --- a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h +++ b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h @@ -41,7 +41,7 @@ #ifndef MODELINSPECTORPLUGIN_H #define MODELINSPECTORPLUGIN_H -#include "../../interfaces/iplugin.h" +#include <interfaces/iplugin.h> class ModelInspectorPlugin : public DuSE::IPlugin { diff --git a/examples/uml/duse-mt/src/plugins/plugins.pro b/examples/uml/duse-mt/src/plugins/plugins.pro new file mode 100644 index 00000000..ae7af4d1 --- /dev/null +++ b/examples/uml/duse-mt/src/plugins/plugins.pro @@ -0,0 +1,4 @@ +TEMPLATE = subdirs +CONFIG += ordered + +SUBDIRS = modelinspector diff --git a/examples/uml/duse-mt/src/src.pro b/examples/uml/duse-mt/src/src.pro index 9b827b01..f67f6625 100644 --- a/examples/uml/duse-mt/src/src.pro +++ b/examples/uml/duse-mt/src/src.pro @@ -1,5 +1,4 @@ TEMPLATE = subdirs CONFIG += ordered -#SUBDIRS = libs app plugins -SUBDIRS = libs app +SUBDIRS = libs app plugins |