Использование компилятора Qt SCXML (qscxmlc)
Инструмент qscxmlc читает файл .scxml и генерирует файлы исходного кода C++ и заголовки, содержащие класс, реализующий автомат состояний, как определено в SCXML.
Использование
Инструмент qscxmlc вызывается автоматически, если проект связан с библиотекой scxml в файле проекта, и файл .scxml для использования указан с помощью специальных директив сборки STATECHARTS или qt6_add_statecharts.
При использовании cmake:
find_package(Qt6 COMPONENTS Scxml REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Scxml)
qt6_add_statecharts(mytarget
MyStatemachine.scxml
) При использовании qmake:
QT += scxml
STATECHARTS = MyStatemachine.scxml
С вышеуказанными определениями, qmake или cmake вызывают qscxmlc для генерации MyStatemachine.h и MyStatemachine.cpp, и добавляют их соответствующим образом в проект как заголовки и исходные файлы.
По умолчанию, имя сгенерированного класса, реализующего автомат состояний, соответствует атрибуту name корневого элемента <scxml>.
Инструмент qscxmlc также может быть вызван вручную, и полученные файлы заголовков и исходного кода могут быть использованы как обычные файлы исходного кода в проекте. При использовании этих файлов исходного кода в проекте cmake, необходимо дополнительно отключить автоматическое создание MOC в файле CMakeLists.txt, как показано в этом примере:
set_source_files_properties(statemachine.h PROPERTIES SKIP_AUTOMOC TRUE)
Если этого не сделать, при компиляции будут обнаружены ошибки дублирования символов.
Командные параметры
Инструмент qscxmlc поддерживает следующие командные параметры, которые можно указать с помощью переменной QSCXMLC_ARGUMENTS в файле проекта:
| Параметр | Описание |
|---|---|
--namespace <namespace> |
Разместить сгенерированный класс(ы) в указанном пространстве имен. |
-o <base/out/name> |
Базовое имя выходных файлов. Оно может включать путь. Если не указано, используется базовое имя входного файла. |
--header <header/out> |
Имя выходного файла заголовка. Если не указано, добавляется .h к базовому имени. |
--impl <cpp/out> |
Имя выходного файла исходного кода. Если не указано, добавляется .cpp к базовому имени. |
--classname <StateMachineClassName> |
Имя класса сгенерированного автомата состояний. Если не указано, используется значение атрибута name тега <scxml>. Если этот атрибут также не указан, используется базовое имя (без пути) из имени входного файла. |
--statemethods |
Генерировать дополнительные методы доступа и сигналов для состояний. Таким образом, вы можете подключаться к изменениям состояния с помощью обычной функции QObject::connect() и напрямую вызывать метод для определения, является ли состояние активным в данный момент. |
В дополнение к параметрам QSCXMLC_ARGUMENTS, файлы проекта qmake и CMake поддерживают следующие параметры:
| Параметр | Описание |
|---|---|
QSCXMLC_DIR|OUTPUT_DIR <directory> |
QSCXMLC_DIR (qmake) или OUTPUT_DIR (cmake) задает директорию для выходных файлов. |
QSCXMLC_NAMESPACE|NAMESPACE <namespace> |
QSCXMLC_NAMESPACE (qmake) или NAMESPACE (cmake) задает пространство имен для сгенерированных классов. |
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qscxmlc.html