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 ()でステートの変更に接続したり、ステートが現在アクティブかどうかを調べるメソッドを直接呼び出したりできる。 |
qmake
とCMake
プロジェクト・ファイルは以下のオプションをサポートしています:
オプション | 説明 |
---|---|
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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。