Qt SCXML コンパイラ (qscxmlc) の使用法

qscxmlc ツールは .scxml ファイルを読み込み、SCXML で定義されたステートマシンを実装するクラスを含む C++ のソースファイルとヘッダファイルを生成します。

使用方法

qscxmlc ツールは、プロジェクトファイルのscxml ライブラリにリンクされ、STATECHARTS または qt6_add_statecharts という特別なビルドディレクティブを使って.scxml ファイルを指定すると自動的に呼び出されます。

cmake を使用する場合:

find_package(Qt6 REQUIRED COMPONENTS Scxml)
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 を生成し、ヘッダーとソースとしてプロジェクトに適切に追加します。

デフォルトでは、ステート・マシンを実装する生成されたクラスの名前は、<scxml> ルート要素のname属性と一致します。

また、qscxmlc ツールを手動で起動し、生成されたヘッダー・ファイルとソース・ファイルをプロジェクトの通常のソース・ファイルとして使用することもできます。これらのソース・ファイルをcmake プロジェクトの一部として使用する場合、この例に示すように、CMakeLists.txt ファイルで自動 moc を無効にする必要があります:

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>生成されるステート・マシンのクラス名。何も指定されない場合、<scxml>タグのname属性の値が使用されます。この属性も指定されていない場合、ベース名(パスを除く)は入力ファイル名から取られます。
--statemethodsステートのアクセッサメソッドとシグナルメソッドを追加しました。こうすることで、プレーンなQObject::connect ()でステートの変更に接続したり、ステートが現在アクティブかどうかを調べるメソッドを直接呼び出したりできる。

qmakeCMake プロジェクト・ファイルは以下のオプションをサポートしています:

オプション説明
QSCXMLC_DIR|OUTPUT_DIRECTORY <directory>QSCXMLC_DIR (qmake) または (cmake) は、出力ファイルのディレクトリを指定します。OUTPUT_DIR (cmake) は廃止予定です。OUTPUT_DIRECTORY
QSCXMLC_NAMESPACE|NAMESPACE <namespace>QSCXMLC_NAMESPACE (qmake) または (cmake) は、生成されるクラスのネームスペースを指定します。NAMESPACE
QSCXMLC_ARGUMENTS|OPTIONS <options>QSCXMLC_ARGUMENTS (qmake) または (cmake) では、 コンパイラの追加オプションを指定できます。cmake での QSCXMLC_ARGUMENTS は廃止されました。OPTIONS qscxmlc

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。