aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2021-06-22 10:56:26 +0200
committerUlf Hermann <ulf.hermann@qt.io>2021-06-24 10:53:18 +0200
commit88424ba1bfeba768bf6157963a06b1ed72ff63ab (patch)
treeb380c70e13af828844486fd3cf67b7cd37f10ef9
parentc9e901db891336434b682dd92ec8e2d18a8e7c03 (diff)
CMake: Add qmldir classname entry only if there is a plugin
A class name without a plugin is pointless. Pick-to: 6.2 Change-Id: I3cfd95bc7d9dd9e80d7f23fbd6e2c2b2b855763d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
-rw-r--r--src/qml/Qt6QmlMacros.cmake2
-rw-r--r--tests/auto/qml/qmlbasicapp/tst_qmlbasicapp.cpp28
2 files changed, 29 insertions, 1 deletions
diff --git a/src/qml/Qt6QmlMacros.cmake b/src/qml/Qt6QmlMacros.cmake
index 718c7fe38a..cc0037f3cc 100644
--- a/src/qml/Qt6QmlMacros.cmake
+++ b/src/qml/Qt6QmlMacros.cmake
@@ -731,6 +731,7 @@ function(_qt_internal_target_generate_qmldir target out_dir target_path)
get_target_property(qt_libinfix ${target} QT_QML_MODULE_LIBINFIX)
string(APPEND content "plugin ${plugin_target}${qt_libinfix}\n")
+ _qt_internal_qmldir_item(classname QT_QML_MODULE_CLASS_NAME)
endif()
get_target_property(designer_supported ${target} QT_QML_MODULE_DESIGNER_SUPPORTED)
@@ -738,7 +739,6 @@ function(_qt_internal_target_generate_qmldir target out_dir target_path)
string(APPEND content "designersupported\n")
endif()
- _qt_internal_qmldir_item(classname QT_QML_MODULE_CLASS_NAME)
_qt_internal_qmldir_item(typeinfo QT_QMLTYPES_FILENAME)
_qt_internal_qmldir_item_list(import QT_QML_MODULE_IMPORTS)
diff --git a/tests/auto/qml/qmlbasicapp/tst_qmlbasicapp.cpp b/tests/auto/qml/qmlbasicapp/tst_qmlbasicapp.cpp
index 9f027c3d8a..08ce2f0fd9 100644
--- a/tests/auto/qml/qmlbasicapp/tst_qmlbasicapp.cpp
+++ b/tests/auto/qml/qmlbasicapp/tst_qmlbasicapp.cpp
@@ -38,6 +38,7 @@ private slots:
void loadComponent();
void resourceFiles();
void fileSystemFiles();
+ void qmldirContents();
};
void tst_basicapp::loadComponent()
@@ -81,5 +82,32 @@ void tst_basicapp::fileSystemFiles()
QVERIFY(QFile::exists(basedir + QStringLiteral("/TimeExample/minute.png")));
}
+void tst_basicapp::qmldirContents()
+{
+ {
+ QFile qmldir(QCoreApplication::applicationDirPath() + "/qmldir");
+ QVERIFY(qmldir.open(QIODevice::ReadOnly));
+ const QByteArray contents = qmldir.readAll();
+ QVERIFY(contents.contains("module BasicApp"));
+ QVERIFY(contents.contains("typeinfo"));
+ QVERIFY(contents.contains("prefer :/BasicApp/"));
+ QVERIFY(!contents.contains("classname"));
+ QVERIFY(!contents.contains("plugin"));
+ }
+
+ {
+ QFile qmldir(QCoreApplication::applicationDirPath() + "/TimeExample/qmldir");
+ QVERIFY(qmldir.open(QIODevice::ReadOnly));
+ const QByteArray contents = qmldir.readAll();
+ QVERIFY(contents.contains("module TimeExample"));
+ QVERIFY(contents.contains("optional plugin"));
+ QVERIFY(contents.contains("classname"));
+ QVERIFY(contents.contains("typeinfo"));
+ QVERIFY(contents.contains("depends QtQml"));
+ QVERIFY(contents.contains("prefer :/TimeExample/"));
+ QVERIFY(contents.contains("Clock 1.0 Clock.qml"));
+ }
+}
+
QTEST_MAIN(tst_basicapp)
#include "tst_qmlbasicapp.moc"