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许可下可用。
了解更多信息。