diff options
Diffstat (limited to 'src/qml/doc/src/cmake/qt_generate_foreign_qml_types.qdoc')
-rw-r--r-- | src/qml/doc/src/cmake/qt_generate_foreign_qml_types.qdoc | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/qml/doc/src/cmake/qt_generate_foreign_qml_types.qdoc b/src/qml/doc/src/cmake/qt_generate_foreign_qml_types.qdoc new file mode 100644 index 0000000000..8f1d6522be --- /dev/null +++ b/src/qml/doc/src/cmake/qt_generate_foreign_qml_types.qdoc @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +\page qt_generate_foreign_qml_types.html +\ingroup cmake-commands-qtqml + +\title qt_generate_foreign_qml_types +\target qt6_generate_foreign_qml_types + +\summary{Registers types from one target in a QML module.} + +\include cmake-find-package-qml.qdocinc + +\preliminarycmakecommand + +\section1 Synopsis + +\badcode +qt_generate_foreign_qml_types( + source_target + destination_qml_target +) + +\endcode + +\versionlessCMakeCommandsNote qt6_generate_foreign_qml_types() + +\section1 Description + +\c qt_generate_foreign_qml_types extracts types marked via QML registration +macros (like \l QML_ELEMENT) from \c source_target and registers them as foreign +types in the QML module \c destination_qml_target. + +This can be useful when one wants to create a library with optional QML integration, without +depending directly on QML. + +\badcode +// myclass.h +#include <QtQmlIntegration/qqmlintegration.h> + +class MyClass : public QObject +{ + QML_ELEMENT + Q_OBJECT + + // [...] +}; +\endcode + +\badcode +# 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) +\endcode + +\note In the example above, \c 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 \c QML_ELEMENT macro). + +The effect is equivalent to using \c QML_FOREIGN with custom structs in the QML library to expose +the types. +*/ |