Spec-Zone.ru › Qt 6.1

Использование компилятора 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API