aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmlcachegen/qmlcachegen.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2018-02-02 15:22:44 +0100
committerSimon Hausmann <simon.hausmann@qt.io>2018-02-08 10:21:59 +0000
commit51673f868a9ab576d9f5e02effb2681308ea82e4 (patch)
tree59b32f323b97515400b678f4b516722329932bdd /tools/qmlcachegen/qmlcachegen.cpp
parent10b74441825dc11d2d3e56f41bbfebc928be0cfd (diff)
Fix CONFIG+=qtquickcompiler with multiple resource files
Fix command line option handling to allow for processing of multiple .qrc files as input files when generating the loader.cpp file. Task-number: QTBUG-66161 Change-Id: I1ecd40bf863c6570ccf42846106791b7f53fe432 Reviewed-by: Samuli Piippo <samuli.piippo@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'tools/qmlcachegen/qmlcachegen.cpp')
-rw-r--r--tools/qmlcachegen/qmlcachegen.cpp40
1 files changed, 28 insertions, 12 deletions
diff --git a/tools/qmlcachegen/qmlcachegen.cpp b/tools/qmlcachegen/qmlcachegen.cpp
index 31215daf08..7c04f69a2b 100644
--- a/tools/qmlcachegen/qmlcachegen.cpp
+++ b/tools/qmlcachegen/qmlcachegen.cpp
@@ -442,28 +442,42 @@ int main(int argc, char **argv)
parser.process(app);
+ enum Output {
+ GenerateCpp,
+ GenerateCacheFile,
+ GenerateLoader
+ } target = GenerateCacheFile;
+
+ QString outputFileName;
+ if (parser.isSet(outputFileOption))
+ outputFileName = parser.value(outputFileOption);
+
+ if (outputFileName.endsWith(QLatin1String(".cpp"))) {
+ target = GenerateCpp;
+ if (outputFileName.endsWith(QLatin1String("qmlcache_loader.cpp")))
+ target = GenerateLoader;
+ }
+
const QStringList sources = parser.positionalArguments();
if (sources.isEmpty()){
parser.showHelp();
- } else if (sources.count() > 1) {
+ } else if (sources.count() > 1 && target != GenerateLoader) {
fprintf(stderr, "%s\n", qPrintable(QStringLiteral("Too many input files specified: '") + sources.join(QStringLiteral("' '")) + QLatin1Char('\'')));
return EXIT_FAILURE;
}
- const QString inputFile = sources.first();
- Error error;
-
- QString outputFileName = inputFile + QLatin1Char('c');
- if (parser.isSet(outputFileOption))
- outputFileName = parser.value(outputFileOption);
+ const QString inputFile = sources.first();
+ if (outputFileName.isEmpty())
+ outputFileName = inputFile + QLatin1Char('c');
if (parser.isSet(filterResourceFileOption)) {
return filterResourceFile(inputFile, outputFileName);
}
- if (outputFileName.endsWith(QLatin1String("qmlcache_loader.cpp"))) {
- ResourceFileMapper mapper(inputFile);
+ if (target == GenerateLoader) {
+ ResourceFileMapper mapper(sources);
+ Error error;
if (!generateLoader(mapper.qmlCompilerFiles(), outputFileName, parser.values(resourceFileMappingOption), &error.message)) {
error.augment(QLatin1String("Error generating loader stub: ")).print();
return EXIT_FAILURE;
@@ -474,7 +488,7 @@ int main(int argc, char **argv)
QString inputFileUrl = inputFile;
SaveFunction saveFunction;
- if (outputFileName.endsWith(QLatin1String(".cpp"))) {
+ if (target == GenerateCpp) {
ResourceFileMapper fileMapper(parser.values(resourceOption));
QString inputResourcePath = parser.value(resourcePathOption);
@@ -523,18 +537,20 @@ int main(int argc, char **argv)
if (inputFile.endsWith(QLatin1String(".qml"))) {
+ Error error;
if (!compileQmlFile(inputFile, saveFunction, &error)) {
error.augment(QLatin1String("Error compiling qml file: ")).print();
return EXIT_FAILURE;
}
} else if (inputFile.endsWith(QLatin1String(".js"))) {
+ Error error;
if (!compileJSFile(inputFile, inputFileUrl, saveFunction, &error)) {
error.augment(QLatin1String("Error compiling qml file: ")).print();
return EXIT_FAILURE;
}
} else {
- fprintf(stderr, "Ignoring %s input file as it is not QML source code - maybe remove from QML_FILES?\n", qPrintable(inputFile)); }
-
+ fprintf(stderr, "Ignoring %s input file as it is not QML source code - maybe remove from QML_FILES?\n", qPrintable(inputFile));
+ }
return EXIT_SUCCESS;
}