[QBS] Dependency to Transformer Artifact
Christian Kandeler
christian.kandeler at theqtcompany.com
Mon Jul 20 10:31:39 CEST 2015
On 07/19/2015 12:06 PM, Stephan Gatzka wrote:
> I wrote a small qbs module to generate version information from an
> version input file. So I have a Module consisting of a Transformer which
> has an Artifact item with fileTags: ["version"].
>
> The version.h file is correctly generated but the c file including
> version.h is not rebuild.
I cannot reproduce that. I've changed the product version, and both
version.h and main.c were regenerated. What exactly did you try?
(But see below for some other possible improvements in your module.)
> Module {
> Transformer {
I'd suggest using a Rule instead of a Transformer here. Working on input
tags instead of hardcoded files gives you more flexibility. In general,
Rules are preferable whenever inputs exist.
> inputs: "version.h.in"
>
> Artifact {
> filePath: "version.h"
> fileTags: ["version"]
The tag should be "hpp".
> }
>
> prepare: {
> var cmd = new JavaScriptCommand();
> cmd.description = "Processing '" + input.fileName + "'";
> cmd.highlight = "codegen";
> cmd.sourceCode = function() {
> var file = new TextFile(input.fileName);
You should use input.filePath here. input.fileName is really just the
name of the file, which is not what you want.
> var content = file.readAll();
> file.close()
> content = content.replace(/##VERSION_STR##/g, product.version);
> file = new TextFile(output.fileName, TextFile.WriteOnly);
output.filePath, as above.
Christian
More information about the Qbs
mailing list