qt_extract_metatypes
从 Qt 目标机中提取元类型,并生成相关的 metatypes.json 文件。
此命令在 Qt 6.0 中引入。
注意: 此命令为技术预览版,可能会在未来版本中更改。
简介
qt_extract_metatypes(target [MANUAL_MOC_JSON_FILES json_files...] [OUTPUT_FILES variable_name] )
如果禁用了无版本命令,请使用qt6_extract_metatypes()
代替。它支持与此命令相同的参数集。
说明
某些操作依赖于在目标上生成和收集元类信息。这通常由 Qt XML 命令内部处理,但如果情况并非如此,则可调用qt_extract_metatypes()
来强制收集特定target
的元类型信息。
元类型信息是通过以下方式之一为目标源文件生成的:
- 由 AUTOMOC 自动生成。
qt_extract_metatypes()
命令会检测target
上的 AUTOMOC 是否启用,并自动提取所需的信息。 - 使用
--output-json
选项手动调用moc
。该项目负责跟踪使用该方法生成的所有 JSON 文件,并通过MANUAL_MOC_JSON_FILES
选项将其传递给qt_extract_metatypes()
。
qt_extract_metatypes()
生成特定于目标的元类型 JSON 文件,该文件收集了来自 AUTOMOC 和手动 moc 输入的所有元类型细节。它通过使用 选项调用 来实现。如果需要知道在哪里可以找到生成的元类型 JSON 文件(例如,将其传递给其他命令或进行安装),请使用 选项提供变量名,以存储其绝对路径。--collect-json
moc
OUTPUT_FILES
自动提取元类型
自 Qt 6.8 起,如果您没有禁用AUTOMOC
,并使用 CMake 3.19 或更高版本,或手动调用qt_finalize_target(),那么qt_extract_metatypes()
会作为qt_add_library 最终确定步骤的一部分被自动调用。如果在最终确定之前手动调用了qt_extract_metatypes()
(可能使用自定义参数),则不会有任何影响。不过,如果你没有这样做,它会确保元类也被生成。如果将来库中的任何类型被用作任何 QML 类型的一部分,这一点非常重要,而且没有任何缺点。
此外,qt_add_qml_module会自动为其目标调用qt_extract_metatypes()
。
© 2025 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.