summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2024-03-06 16:30:45 +0100
committerAlexandru Croitor <alexandru.croitor@qt.io>2024-03-20 09:57:07 +0100
commit97ec9e974245574744cd00944c315eac98383434 (patch)
tree930d0ae7df53fdac9bf9d3ce688ea6edae07dcee /cmake
parentec9b70c5616aa7522fa6ed0bfb74d1f6549564c2 (diff)
CMake: Allow specifying additional glob paths for QmlPlugins.cmake
Currently we hard-code to look for qml plugin Config.cmake files in the current list dir, whether the Qt6Qml directory is. This is not sufficient for finding qml plugins in a prefix build of a repo that has not been installed yet. For example qtquick3d plugins will be in qtquick3d_build_dir/lib/cmake/Qt6Qml/QmlPlugins, which won't be picked up by the Qt6Qml Config file in the installed Qt location. Allow specifying extra qml plugin glob prefixes via a new QT_ADDITIONAL_QML_PLUGIN_GLOB_PREFIXES variable. This is similar to QT_ADDITIONAL_PACKAGES_PREFIX_PATH. Any path specified via QT_ADDITIONAL_QML_PLUGIN_GLOB_PREFIXES will have the QmlPlugins/${INSTALL_CMAKE_NAMESPACE}*Config.cmake glob appended to it, and then used for globbing files in that location, after processing the main location wherever Qt6Qml is. This will be used by ExternalProject example machinery. Task-number: QTBUG-90820 Task-number: QTBUG-96232 Change-Id: I469863c965b8b13cf007c611976a64fbff6e9111 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 40fa36db22b67363a4a05a4d74b0fcfc2f4833b8) Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QtPostProcessHelpers.cmake23
1 files changed, 22 insertions, 1 deletions
diff --git a/cmake/QtPostProcessHelpers.cmake b/cmake/QtPostProcessHelpers.cmake
index 82d8fffee8..0c89d37f8e 100644
--- a/cmake/QtPostProcessHelpers.cmake
+++ b/cmake/QtPostProcessHelpers.cmake
@@ -451,7 +451,28 @@ if(NOT DEFINED QT_SKIP_AUTO_QML_PLUGIN_INCLUSION)
set(QT_SKIP_AUTO_QML_PLUGIN_INCLUSION OFF)
endif()
-file(GLOB __qt_qml_plugins_config_file_list \"\${CMAKE_CURRENT_LIST_DIR}/QmlPlugins/${INSTALL_CMAKE_NAMESPACE}*Config.cmake\")
+set(__qt_qml_plugins_config_file_list \"\")
+set(__qt_qml_plugins_glob_prefixes \"\${CMAKE_CURRENT_LIST_DIR}\")
+
+# Allow passing additional prefixes where we will glob for PluginConfig.cmake files.
+if(QT_ADDITIONAL_QML_PLUGIN_GLOB_PREFIXES)
+ foreach(__qt_qml_plugin_glob_prefix IN LISTS QT_ADDITIONAL_QML_PLUGIN_GLOB_PREFIXES)
+ if(__qt_qml_plugin_glob_prefix)
+ list(APPEND __qt_qml_plugins_glob_prefixes \"\${__qt_qml_plugin_glob_prefix}\")
+ endif()
+ endforeach()
+endif()
+
+list(REMOVE_DUPLICATES __qt_qml_plugins_glob_prefixes)
+
+foreach(__qt_qml_plugin_glob_prefix IN LISTS __qt_qml_plugins_glob_prefixes)
+ file(GLOB __qt_qml_plugins_glob_config_file_list
+ \"\${__qt_qml_plugin_glob_prefix}/QmlPlugins/${INSTALL_CMAKE_NAMESPACE}*Config.cmake\")
+ if(__qt_qml_plugins_glob_config_file_list)
+ list(APPEND __qt_qml_plugins_config_file_list \${__qt_qml_plugins_glob_config_file_list})
+ endif()
+endforeach()
+
if (__qt_qml_plugins_config_file_list AND NOT QT_SKIP_AUTO_QML_PLUGIN_INCLUSION)
# First round of inclusions ensure all qml plugin targets are brought into scope.
foreach(__qt_qml_plugin_config_file \${__qt_qml_plugins_config_file_list})