QMake Integration
Qt IVI Generator has been integrated with QMake to generate all or part of projects.
In it's simplest form, QMake can generate all the source code and the project only need to configure what type of project is built.
For complex setups, generated code can be combined with application specific code which can extend and use it.
Example:
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
Available QMake Variables:
QFACE_FORMAT | frontend (default), simulator_backend |
QFACE_SOURCES | list of .qface input files |
QFACE_MODULE_NAME | The (optional) name of the module that is using the generated code |
QFACE_OUTPUT_DIR | Output folder where the generated code will be created. The default is to use the current build folder |
QFACE_ANNOTATIONS | list of additional annotation YAML files. |
See Autogenerator usage for more details on the generator command line arguments.
Note: As the ivigenerator has specific system dependencies, it may not be available in every QtIviCore installation. In this case the ivigenerator qmake feature is also not available and this can result in build errors.
The following code snippet makes sure to stop the build and give a meaningful error message in this case:
QT_FOR_CONFIG += ivicore !qtConfig(ivigenerator): error("No ivigenerator available")
QtModule support
The Qmake Integration also supports generating code which enables you to compile the generated code as a qt module. As it needs to work more closely with the Qt's module build system, it shouldn't be loaded using the CONFIG variable, but using the load() function instead. The ivigenerator_qt_module feature replaces the load(qt_module) call. The following shows how the integration of the QtIviVehicleFunctions module is done.
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)
In addition to the project file for the module library also the sync.profile needs to be changed, as this is used to call the syncqt.pl script which generates the forwarding headers. Usually the sync.profile is setup to search for the headers in the source folders. Using $out_basedir it can be extended to also search in the build folder.
... %modules = ( # path to module name map "QtIviVehicleFunctions" => "$basedir/src/ivivehiclefunctions;$out_basedir/src/ivivehiclefunctions" ); ...
© 2020 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.