On this page

Tying it all together with CMake

When creating QML modules, CMake provides the infrastructure to properly register QML types, generate necessary metadata, and ensure your module is correctly packaged and deployable. This page outlines the recommended workflow.

Using qt_add_qml_module

The qt_add_qml_module command is the standard and recommended way to create QML modules. It handles all the complex details of QML module creation:

qt_add_qml_module(my_qml_module
    URI MyModule
    QML_FILES
        MyType.qml
        AnotherType.qml
    SOURCES
        mytype.cpp mytype.h
)

This single command:

  • Creates the module target
  • Registers QML types from C++ and QML files
  • Generates a qmldir file
  • Handles type registration
  • Sets up proper import paths
  • Enables QML tooling support (qmllint, qmlls, etc.)

Adding Further QML Files

For QML files added after the initial qt_add_qml_module call, use qt_target_qml_sources:

qt_target_qml_sources(my_qml_module
    QML_FILES
        DynamicallyAddedType.qml
)

This can be done based on platform, configuration or other factors.

Detailed CMake Reference

For complete details on all CMake commands, properties, variables, and policies, see CMake Integration for QML.

See also QML Modules and qt_add_qml_module.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.