diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8d1eec2e45dc56791158ece3e9bb23c933891866..6e0b7206568b492ba630fc841b7d1df75fd59759 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,6 +6,25 @@ find_package(
 
 find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Network WebSockets)
 
+# In shared Qt builds, the qml plugins don't have dependencies on their backing libraries, and
+# thus the backing library packages are not automatically looked up.
+# The StandaloneTests directory contains Config files that find_package all installed Qt packages.
+# Abuse that, and include all of them to make all the backing libraries available as imported
+# targets.
+find_package(Qt6 COMPONENTS BuildInternals)
+if(Qt6BuildInternals_DIR)
+    set(standalone_tests_dir "${Qt6BuildInternals_DIR}/StandaloneTests")
+    if(EXISTS "${standalone_tests_dir}")
+        # Glob the config files in there.
+        file(GLOB_RECURSE standalone_tests_files "${standalone_tests_dir}/*TestsConfig.cmake")
+
+        # Include each one of them.
+        foreach(standalone_tests_file IN LISTS standalone_tests_files)
+            include("${standalone_tests_file}")
+        endforeach()
+    endif()
+endif()
+
 set(imports "")
 
 # Get all imported targets.