qt_ifcodegen_import_variables

从 qface IDL 文件生成文件并提供 CMake 内部使用的变量。

此命令在 Qt6 包的 InterfaceFramework 组件中定义。

使用以下命令加载包:

find_package(Qt6 REQUIRED COMPONENTS InterfaceFramework)

概要

qt_ifcodegen_import_variables(
    prefix
    IDL_FILES idl_files
    TEMPLATE template
    [ANNOTATION_FILES ...]
    [IMPORT_PATH ...]
    [OUTPUT_DIR output_dir]
    [EXTRA_HEADERS_OUTPUT_DIR extra_headers_output_dir]
    [EXTRA_TEMPLATE_SEARCH_PATH ...]
    [VERBOSE]
    [NO_GENERATE]
)

如果禁用了 无版本命令,则使用 qt6_ifcodegen_import_variables()。它支持与该命令相同的参数集。

描述

通过调用 ifcodegen 从 qface IDL 文件生成文件。所有生成的文件都通过向当前作用域公开变量来提供。所有公开的变量均以 prefix 开头,后跟一个下划线,并由引用的模板定义。

使用 IDL_FILES 指定输入 IDL 文件,而 TEMPLATE 指定用于生成的 ifcodegen 模板。提供的模板可以是模板文件夹的路径,也可以是模板搜索路径中找到的模板名称。使用 EXTRA_TEMPLATE_SEARCH_PATH 参数,可以扩展搜索路径。如果您想为代码生成使用自定义模板,这特别有用。作为功能参数的替代方案,可以使用全局 CMake 变量 QT_IFCODEGEN_TEMPLATE_SEARCH_PATH 指定所有 ifcodegen 函数调用的额外搜索路径。

通过 ANNOTATION_FILES 参数传递额外的注释文件。

可以使用 IMPORT_PATH 将 IDL 文件的搜索路径添加到其中,该文件依赖于此 IDL 文件。其他 IDL 文件仍需要独立生成和构建。

OUTPUT_DIR 指定生成文件将被写入的目录,默认为 CMAKE_CURRENT_BINARY_DIR

EXTRA_HEADER_OUTPUT_DIR 用于供应一个额外的目录,将复制所有生成的头文件到该目录。

默认情况下,所有由 ifcodegen 生成的日志消息都被丢弃。要显示它们,可以使用 VERBOSE 参数,设置 IFCODEGEN_VERBOSE 变量,或将 CMAKE_MESSAGE_LOG_LEVEL 设置为 VERBOSE

有关生成器命令行参数的更多详细信息,请参阅使用生成器

使用 NO_GENERATE 有可能跳过调用 ifcodegen。这通常仅在您确信文件已经生成时需要,例如在使用 qt_ifcodegen_generate 之前。

有关生成器命令行参数的更多详细信息,请参阅使用生成器

示例

find_package(Qt6 COMPONENTS InterfaceFramework)

# Generate code and import variables into the
# current scope. The variables start with BOOK.
qt6_ifcodegen_import_variables(BOOK
    IDL_FILES addressbook.qface
    TEMPLATE frontend
)

# Use the import variables to build the module
qt_add_qml_module(addressbook_plugin
    OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${BOOK_URI_PATH}"
    URI ${BOOK_URI}
    VERSION ${BOOK_VERSION}
    PLUGIN_TARGET addressbook_plugin
    NO_PLUGIN_OPTIONAL
    NO_GENERATE_PLUGIN_SOURCE
    SOURCES
        ${BOOK_SOURCES}
)

target_link_libraries(AdressBook PUBLIC
    Qt::Core
    Qt::InterfaceFramework
    Qt::InterfaceFrameworkPrivate
    Qt::Qml
    Qt::Quick
)

© 2024 Qt公司有限。本文件中包含的文档贡献是各自所有者的版权。所提供的文档是根据自由软件基金会发布的GNU自由文档许可证第1.3版许可的。GNU自由文档许可证第1.3版。Qt及其相关标志是芬兰以及其他国家/地区的Qt公司商标。商标。所有其他商标均为各自所有者的财产。