QMLアプリケーションのビルド
C++ コンソールアプリケーションのビルドでは、単純なコンソールアプリケーションの CMakeLists.txt ファイルを示しました。ここでは、Qt Quickモジュールを使った QML アプリケーションを作成します。
これが完全なプロジェクトファイルです:
cmake_minimum_required(VERSION 3.16) project(hello VERSION 1.0 LANGUAGES CXX) find_package(Qt6 6.2 COMPONENTS Quick Gui REQUIRED) qt_standard_project_setup(REQUIRES 6.5) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) qt_add_executable(myapp main.cpp ) qt_add_qml_module(myapp URI hello QML_FILES main.qml FramedImage.qml RESOURCES img/world.png ) target_link_libraries(myapp PRIVATE Qt6::Gui Qt6::Quick)
それでは、私たちが行った変更点を見ていきましょう。find_package
の呼び出しで、Core
をQuick
に置き換えています。これにより、Qt6Quick
モジュールの場所が特定され、後でリンクするQt6::Quick
ターゲットが提供されます。
find_package(Qt6 6.2 COMPONENTS Quick Gui REQUIRED)
qt_standard_project_setup を呼び出し、CMAKE_CXX_STANDARD とCMAKE_CXX_STANDARD_REQUIRED
を指定します。REQUIRES 6.5
をqt_standard_project_setup
に渡すことで、qt_add_qml_module の便利なデフォルトにオプトインします。これにより、バージョン6.5までのすべてのQt CMakeポリシー、特にQMLモジュールのデフォルトリソースプレフィックスを定義するQTP0001が有効になります。
qt_standard_project_setup(REQUIRES 6.5) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)
Qt6::Quick
はQt6::Core
に依存しているため、アプリケーションは に対してリンクされます。
qt_add_executableはアプリケーションターゲットを作成し、確定します:
qt_add_executable(myapp main.cpp )
qt_add_qml_moduleは実行ファイルのターゲット、URI、モジュールのバージョン、 QML ファイルのリストを渡し、myapp が QML モジュールになるようにします。これにより、QMLファイルはリソースファイルシステムのqrc:/qt/qml/${URI}
に配置されます。さらに、qt_add_qml_module
は、qmlcachegen
の実行を保証します。さらに、myapp_qmllint
ターゲットを作成し、QML_FILES 内のファイルに対してqmllint
を実行します。
qt_add_qml_module(myapp URI hello QML_FILES main.qml FramedImage.qml RESOURCES img/world.png )
参照されるリソースを追加することで、QMLファイルと同じルートパスの下にある アプリケーションに自動的に追加されます。リソースシステム内のパスをソースディレクトリやビルドディレクトリ内のパスと一致させておくことで、 FramedImage.qmlからの相対パスで解決される画像が常に見つかるようになります。main.qmlをそこからロードする場合はリソースファイルシステム内のイメージを参照し、qml
ツールでレビューする場合は実際のファイルシステム内のイメージを参照します。
target_link_libraries
コマンドでは、Qt6::Core
ではなくQt6::Quick
に対してリンクします。
target_link_libraries(myapp PRIVATE Qt6::Gui Qt6::Quick)
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。