aboutsummaryrefslogtreecommitdiffstats
path: root/share/qbs/module-providers/Qt/templates/moc.js
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2020-03-04 16:23:28 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2020-03-06 09:59:34 +0000
commitce503091a73a0024e6259b37a64fa192b3731581 (patch)
tree3e34230331041915406b64085b3558da08775239 /share/qbs/module-providers/Qt/templates/moc.js
parent053c8f73ca67b9356f337aaf4ed58d2013cc2a77 (diff)
Qt support: Add support for moc metatype files
From Qt 5.15 on, moc can generate metatype information in JSON format. Task-number: QBS-1531 Change-Id: Ie6969f70bac51cc80f11057841ba8d4b7947c646 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'share/qbs/module-providers/Qt/templates/moc.js')
-rw-r--r--share/qbs/module-providers/Qt/templates/moc.js18
1 files changed, 15 insertions, 3 deletions
diff --git a/share/qbs/module-providers/Qt/templates/moc.js b/share/qbs/module-providers/Qt/templates/moc.js
index aa67766b9..dfc72b7c1 100644
--- a/share/qbs/module-providers/Qt/templates/moc.js
+++ b/share/qbs/module-providers/Qt/templates/moc.js
@@ -30,7 +30,7 @@
var ModUtils = require("qbs.ModUtils");
-function args(product, input, outputFileName)
+function args(product, input, outputs)
{
var defines = product.cpp.compilerDefinesByLanguage;
if (input.fileTags.contains("objcpp"))
@@ -56,6 +56,15 @@ function args(product, input, outputFileName)
}
var pluginMetaData = product.Qt.core.pluginMetaData;
var args = [];
+ if (product.Qt.core._generateMetaTypesFile)
+ args.push("--output-json");
+ var outputFileName;
+ for (tag in outputs) {
+ if (tag !== "qt.core.metatypes.in") {
+ outputFileName = outputs[tag][0].filePath;
+ break;
+ }
+ }
args = args.concat(
defines.map(function(item) { return '-D' + item; }),
includePaths.map(function(item) { return '-I' + item; }),
@@ -90,12 +99,15 @@ function outputArtifacts(project, product, inputs, input)
+ input.completeBaseName + ".moc";
artifact.fileTags.push("hpp");
}
- return [artifact];
+ var artifacts = [artifact];
+ if (product.Qt.core._generateMetaTypesFile)
+ artifacts.push({filePath: artifact.filePath + ".json", fileTags: "qt.core.metatypes.in"});
+ return artifacts;
}
function commands(project, product, inputs, outputs, input, output)
{
- var cmd = new Command(fullPath(product), args(product, input, output.filePath));
+ var cmd = new Command(fullPath(product), args(product, input, outputs));
cmd.description = 'moc ' + input.fileName;
cmd.highlight = 'codegen';
return cmd;