qt_generate_foreign_qml_types
Registers types from one target in a QML module.
The command is defined in the Qml component of the Qt6 package, which can be loaded like so:
find_package(Qt6 REQUIRED COMPONENTS Qml)
Note: This command is in technology preview and may change in future releases.
Synopsis
qt_generate_foreign_qml_types(
source_target
destination_qml_target
)
If versionless commands are disabled, use qt6_generate_foreign_qml_types() instead. It supports the same set of arguments as this command.
Description
qt_generate_foreign_qml_types extracts types marked via QML registration macros (like QML_ELEMENT) from source_target and registers them as foreign types in the QML module destination_qml_target.
This can be useful when one wants to create a library with optional QML integration, without depending directly on QML.
// myclass.h
#include <QtQmlIntegration/qqmlintegration.h>
class MyClass : public QObject
{
QML_ELEMENT
Q_OBJECT
// [...]
};
# CMakeLists.txt qt_add_library(mylib myclass.h ...) target_link_libraries(mylib PRIVATE Qt::Core Qt::QmlIntegration) qt_add_qml_module(mylib_declarative VERSION 1.0 URI "mylib" ... ) qt_generate_foreign_qml_types(mylib mylib_declarative)
Note: In the example above, mylib does not depend on QtQml or QtQuick, but only on the header-only QmlIntegration target (for the QtQmlIntegration/qqmlintegration.h header, which provides the QML_ELEMENT macro).
The effect is equivalent to using QML_FOREIGN with custom structs in the QML library to expose the types.