qmake 集成
Qt IVI 生成器完全集成到 qmake 中,用于生成项目的一部分或全部。
在其最简单的形式中,qmake 可以生成所有源代码,项目只需要配置要构建的项目类型。
对于复杂的设置,您可以结合生成的代码与特定应用的代码以扩展和使用生成的代码。
示例
CONFIG += ivigenerator QT_FOR_CONFIG += ivicore !qtConfig(ivigenerator): error("No ivigenerator available") QFACE_FORMAT = frontend QFACE_SOURCES = example.qface QFACE_MODULE_NAME = myModule QFACE_OUTPUT_DIR = myOutputDir QFACE_ANNOTATIONS = annotation.yaml
以下 qmake 变量可用
QFACE_FORMAT | 前端(默认),simulator_backend |
QFACE_SOURCES | 单个 .qface 输入文件。 |
QFACE_MODULE_NAME | 可选。使用生成的代码的模块的名称。 |
QFACE_OUTPUT_DIR | 生成的代码放置的输出文件夹。默认位置是当前构建文件夹。 |
QFACE_ANNOTATIONS | 额外的注释文件的列表,格式为 YAML。更多信息请参阅注释选项。 |
QFACE_IMPORT_PATH | 导入路径的列表,在 IDL 文件使用导入语句时被考虑。更多信息请参阅导入选项。 |
有关生成器命令行参数的更多详细信息,请参阅使用生成器。
注意:由于
ivigenerator
有特定的系统依赖项,它不一定在所有 QtIviCore 安装中可用。在这种情况下,ivigenerator
的 qmake 功能也不可用,这可能导致构建错误。在这种情况下,使用以下代码段确保构建停止并提供有意义的错误消息
QT_FOR_CONFIG += ivicore !qtConfig(ivigenerator): error("No ivigenerator available")
QtModule 支持
qmake 集成还支持生成您可以将代码编译成 Qt 模块的代码。由于此模块需要更紧密地与 Qt 的模块构建系统协作,不应使用 CONFIG
变量来加载,而应使用 load()
函数。 ivigenerator_qt_module
功能替换了 load(qt_module)
调用。
以下说明了您如何集成 QtIviVehicleFunctions 模块
TARGET = QtIviVehicleFunctions QT = core core-private ivicore ivicore-private CONFIG += c++11 ivigenerator QT_FOR_CONFIG += ivicore !qtConfig(ivigenerator): error("No ivigenerator available") ... QFACE_MODULE_NAME = QtIviVehicleFunctions QFACE_SOURCES += ivivehiclefunctions.qface load(ivigenerator_qt_module)
除了模块库的项目文件之外,还需要更改 sync.profile
,因为它用于调用生成转发头文件的 syncqt.pl
脚本。通常,sync.profile
设置为在源文件夹中查找这些头文件。使用 $out_basedir
,您还可以将脚本扩展到在构建文件夹中进行查找。
... %modules = ( # path to module name map "QtIviVehicleFunctions" => "$basedir/src/ivivehiclefunctions;$out_basedir/src/ivivehiclefunctions" ); ...
©2020 The Qt Company Ltd. 本文档中的贡献为各自所有者的版权。提供的文档根据 Free Software Foundation 发布的 GNU Free Documentation License version 1.3 的条款进行许可。Qt 及相关标志是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。