Spec-Zone.ru › Qt

Использование компилятора 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 поддерживает следующие командные параметры:

Параметр Описание
--namespace <namespace> Разместить сгенерированные классы в указанном пространстве имен.
-o <base/out/name> Базовое имя выходных файлов. Оно может включать путь. Если не указано, используется базовое имя входного файла.
--header <header/out> Имя выходного заголовочного файла. Если не указано, к базовому имени добавляется .h.
--impl <cpp/out> Имя выходного файла исходного кода. Если не указано, к базовому имени добавляется .cpp.
--classname <StateMachineClassName> Имя класса сгенерированного конечного автомата. Если не указано, используется значение атрибута name тега <scxml>. Если этот атрибут также не указан, базовое имя (без пути) берется из имени входного файла.
--statemethods Генерировать дополнительные методы-аксессоры и сигналы для состояний. Таким образом, вы можете подключиться к изменениям состояния с помощью plain QObject::connect() и напрямую вызвать метод, чтобы узнать, активно ли состояние в данный момент.

Файлы проектов qmake и CMake поддерживают следующие параметры:

Параметр Описание
QSCXMLC_DIR|OUTPUT_DIRECTORY <directory> QSCXMLC_DIR (qmake) или OUTPUT_DIRECTORY (cmake) указывает каталог для выходных файлов. OUTPUT_DIR (cmake) устарел.
QSCXMLC_NAMESPACE|NAMESPACE <namespace> QSCXMLC_NAMESPACE (qmake) или NAMESPACE (cmake) указывает пространство имен для сгенерированных классов.
QSCXMLC_ARGUMENTS|OPTIONS <options> QSCXMLC_ARGUMENTS (qmake) или OPTIONS (cmake) позволяет указывать дополнительные параметры для компилятора qscxmlc. QSCXMLC_ARGUMENTS с cmake устарел.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qscxmlc.html

Spec-Zone.ru

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