QMLアプリケーションのビルド
C++ コンソールアプリケーションのビルドでは、簡単なコンソールアプリケーションの CMakeLists.txt ファイルを紹介しました。ここでは、このモジュールを使った QML アプリケーションを作成します。 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)
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.