Hi,
I am trying to set up a project using the Qt Plugin System. The project
consists of multiple binaries, one dynamic library that defines the Q_INTERFACE
(LIB) and multiple plugins (PLUGIN) implementing this interface. To have common
unit tests for all plugins, I have a gtest-based binary that loads and tests
the plugins via their interface. This binary should only get linked to LIB, not
to PLUGINS, which is why I removed the „dynamiclibrary“ tag, and added a new
tag, „plugin“ for PLUGINS. Now, of course, my plugin will not be build because
there is no rule cpp,hpp - plugin. Is there an easy way to call the prepare
script of the cpp rules that would be active for a dynamic library? Something
like prepare: cpp.compiler.prepare? Or is there a better way to achieve what I
want?
I am probably not the only person trying to create a plugin, maybe it would
make sense to add such a plugin type to QBS.cpp or qt_plugin to QBS.Qt? Or is
there already something like this?
plugin1.qbs:
Product {
name: „PLUGIN1“
type: „plugin“
Depends {name: „cpp“}
Depends { name: „LIB“ }
Rule {
id: mycompiler
inputs: ["cpp"]
auxiliaryInputs: ["hpp"]
Artifact {
fileTags: [„plugin"]
filePath: product.name + ".so"
}
prepare: compiler.prepare
}
}
test.qbs
CppApplication {
type: ["application", "copied_plugins"]
name: "PluginTester"
Depends { name: "cpp" }
cpp.systemIncludePaths: [ "/usr/src/gtest/" ]
Depends { name: „LIB" }
Depends { name: „PLUGIN1" }
files: [ "main.cpp" ]
Rule {
id: plugin_copy
// take outputs of projects this product depends on, if they are of
type plugin
// as input to this rule
usings: [„plugin"]
Artifact {
fileTags: [ "copied_plugins" ]
filePath: input.fileName
}
prepare: {
var args = []
args.push("--symbolic-link")
args.push(input.filePath)
args.push(output.filePath)
var cmd = new Command("cp", args)
cmd.description = "creating symlink for " + input.fileName + "
to PluginTester"
return cmd;
}
}
}
_______________________________________________
QBS mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/qbs