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
QBS@qt-project.org
http://lists.qt-project.org/mailman/listinfo/qbs