diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-03-04 16:23:28 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-03-06 09:59:34 +0000 |
commit | ce503091a73a0024e6259b37a64fa192b3731581 (patch) | |
tree | 3e34230331041915406b64085b3558da08775239 /share/qbs/module-providers/Qt/templates/moc.js | |
parent | 053c8f73ca67b9356f337aaf4ed58d2013cc2a77 (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.js | 18 |
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; |