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_FILES、HEADERS 和 SOURCES 参数列出了构成模块的文件。它们是其他 CMake 命令的便捷包装器
| 参数 | 文件类型 | 等效命令 | 
|---|---|---|
|  | QML 源文件 | qul_target_qml_sources | 
|  | C++ 头文件(可能包含已导出类型) | qul_target_generate_interfaces | 
|  | C++ 源文件 |  | 
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_COMPONENT和INSTALL_LIBRARY_EXPORT参数指定传递给CMake install(TARGETS)命令的COMPONENT和EXPORT参数。
当使用.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许可下可用。
了解更多信息。