C

qul_add_qml_module

警告:这个 CMake 命令自 2.4 版本以来已弃用,建议使用 MCU.Module 代替。

概述

qul_add_qml_module(<target>
                   URI <uri>
                   [QML_FILES <file paths...>]
                   [HEADERS <file paths...>]
                   [SOURCES <file paths...>]
                   [IMPORTS <uris...>]
                   [OUTPUT_DIRECTORY <path>]
                   [GENERATE_QMLTYPES]
                   [INSTALL_HEADERS_LOCATION <path>]
                   [INSTALL_HEADERS_COMPONENT <name>]
                   [INSTALL_LIBRARY_LOCATION <path>]
                   [INSTALL_LIBRARY_COMPONENT <name>]
                   [INSTALL_LIBRARY_EXPORT <name>]
                   [QML_PROJECT <qmlproject_file>]
)

描述

创建一个 CMake 目标,用于使用给定的 URI 构建一个 QML 模块静态库。

在当前构建目录的子目录中生成一个 QML 模块目录(参见 OUTPUT_DIRECTORY)。

目标配置为允许将其链接到应用程序目标的应用程序导入 QML 模块。

可选地,可以使用 INSTALL_ 参数设置模块安装。

选项

URI 参数是一个点分隔的 QML 模块 URI,在 QML 中导入该模块必须使用。例如,URI "Ui.Buttons" 将导致导入为 "import Ui.Buttons 1.0" 的模块。

QML_FILESHEADERSSOURCES 参数列出了构成模块的文件。它们是其他 CMake 命令的便捷包装器

参数文件类型等效命令
QML_FILESQML 源文件qul_target_qml_sources
HEADERSC++ 头文件(可能包含已导出类型)qul_target_generate_interfaces
SOURCESC++ 源文件target_sources

IMPORTS 参数可以包含新模块依赖的 QML 模块 URI 列表,例如 "IMPORTS QtQuick QtQuick.Templates"。

OUTPUT_DIRECTORY 参数可以覆盖 QML 模块构建的子目录。默认为 CMAKE_CURRENT_BINARY_DIR。模块文件放置在基于导入 URI 的子目录中。例如,针对 QtQuick.Timeline 的子目录将是 OUTPUT_DIRECTORY 下的 QtQuick/Timeline

QML 模块文件放置在 OUTPUT_DIRECTORY 的一个子目录中,该子目录是通过将 URI 中的所有 "." 替换为 "/" 生成的。

当使用 GENERATE_QMLTYPES 参数时,为模块生成一个 "plugins.qmltypes" 文件,并将其放置在生成的 "qmldir" 文件旁边。

安装

OUTPUT_DIRECTORY 中需要以下文件的用户

  • 生成的 "qmldir" 文件
  • .qml 文件(在 QML_FILES 中列出)
  • 生成了来自QML_FILES文件的.h文件(从文件中生成)
  • 生成了来自QML_FILES文件的.fonts文件(从文件中生成)
  • 生成了来自HEADERS头文件中的.qml文件(从头文件中生成)

此外,模块的用户需要访问HEADERS中列出的头文件。该命令永远不会为安装设置这些文件。

如果存在INSTALL_HEADERS_LOCATION参数,则需要从OUTPUT_DIRECTORY中的文件安装到指定的路径。请注意,模块URI的子目录将自动附加到路径。

可选的INSTALL_HEADERS_COMPONENT参数控制用于CMake install(DIRECTORY)命令的COMPONENT

如果存在INSTALL_LIBRARY_LOCATION参数,则编译后的库将被安装到指定的位置。可选的INSTALL_LIBRARY_COMPONENTINSTALL_LIBRARY_EXPORT参数指定传递给CMake install(TARGETS)命令的COMPONENTEXPORT参数。

当使用.qmlproject文件配置项目时,指定了QML_PROJECT

示例

qul_add_qml_module(simple_qml_only_module
    URI MySimpleModule
    QML_FILES
        Foo.qml
        Bar.qml
)

# myapp has QML files that "import MySimpleModule" and use Foo and Bar
target_link_libraries(myapp PRIVATE simple_qml_only_module)


qul_add_qml_module(myqmlmodule
    URI MyOrg.Styles
    QML_FILES
        Foo.qml
    HEADERS
        include/backend.h
    SOURCES
        source/backend.cpp
    IMPORTS
        QtQuick.Templates
    OUTPUT_DIRECTORY
        # Means that files will be ${CMAKE_CURRENT_BINARY_DIR}/imports/MyOrg/Styles/...
        ${CMAKE_CURRENT_BINARY_DIR}/imports/
    GENERATE_QMLTYPES
    INSTALL_HEADERS_LOCATION "${CMAKE_INSTALL_INCLUDEDIR}/qmlmodules"
    INSTALL_HEADERS_COMPONENT ModuleHeaders
    INSTALL_LIBRARY_LOCATION ${CMAKE_INSTALL_LIBDIR}
    INSTALL_LIBRARY_COMPONENT ObjectLibraries
    INSTALL_LIBRARY_EXPORT SharedExportName
)

target_include_directories(myqmlmodule
    PUBLIC
        "include/"
)
target_link_libraries(myqmlmodule PUBLIC
    Qul::ControlsTemplates
)

# Need to ensure that backend.h is installed and in the include path separately.
install(
    DIRECTORY "include/"
    DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/imports/include/
)
target_include_directories(myqmlmodule
    INTERFACE
        $<INSTALL_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/imports/include/>
)

另请参阅 在QML中定义单例

在特定Qt许可下可用。
了解更多信息。