aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generatorrunnerconfig.h.in3
-rw-r--r--main.cpp25
2 files changed, 23 insertions, 5 deletions
diff --git a/generatorrunnerconfig.h.in b/generatorrunnerconfig.h.in
index 93b6bb011..d291fcc53 100644
--- a/generatorrunnerconfig.h.in
+++ b/generatorrunnerconfig.h.in
@@ -7,4 +7,7 @@
// generatorrunner plugin dir
#define GENERATORRUNNER_PLUGIN_DIR "@generator_plugin_DIR@"
+// module extension
+#define MODULE_EXTENSION "@CMAKE_SHARED_LIBRARY_SUFFIX@"
+
#endif
diff --git a/main.cpp b/main.cpp
index 88e4eabd9..9397ba87c 100644
--- a/main.cpp
+++ b/main.cpp
@@ -127,15 +127,30 @@ int main(int argc, char *argv[])
if (!generatorSet.isEmpty()) {
QFileInfo generatorFile(generatorSet);
- if (generatorFile.baseName() == generatorSet)
- generatorFile.setFile(QDir(GENERATORRUNNER_PLUGIN_DIR), generatorSet + "_generator");
+ if (!generatorFile.exists()) {
+ QString generatorSetName(generatorSet + "_generator" + MODULE_EXTENSION);
+
+ // More library paths may be added via the QT_PLUGIN_PATH environment variable.
+ QCoreApplication::addLibraryPath(GENERATORRUNNER_PLUGIN_DIR);
+ foreach (const QString& path, QCoreApplication::libraryPaths()) {
+ generatorFile.setFile(QDir(path), generatorSetName);
+ if (generatorFile.exists())
+ break;
+ }
+ }
+
+ if (!generatorFile.exists()) {
+ std::cerr << argv[0] << ": Error loading generator-set plugin: ";
+ std::cerr << qPrintable(generatorFile.baseName()) << " module not found." << std::endl;
+ return EXIT_FAILURE;
+ }
QLibrary plugin(generatorFile.filePath());
getGeneratorsFunc getGenerators = (getGeneratorsFunc)plugin.resolve("getGenerators");
- if (getGenerators)
+ if (getGenerators) {
getGenerators(&generators);
- else {
- std::cerr << argv[0] << ": Error loading generatorset plugin: " << qPrintable(plugin.errorString()) << std::endl;
+ } else {
+ std::cerr << argv[0] << ": Error loading generator-set plugin: " << qPrintable(plugin.errorString()) << std::endl;
return EXIT_FAILURE;
}
} else if (!args.contains("help")) {