CMakeプロジェクトでQtを利用可能にする
現在、ユーザープロジェクトで Qt を利用可能にする唯一のサポートされている方法は、システムに Qt をあらかじめインストールしておくか、あるいは xml-ph-0000@deepl.internal のような、Qt を事前にビルドして利用可能にする同等のワークフローを採用することです find_package、vcpkg などです。
xml-ph-0000@deepl.internal を使用する場合 Qt Creator またはqt-cmake (Windows ではqt-cmake.bat ) を使用する場合、Qt のインストール場所は自動的に基になる CMake 呼び出しに転送されます。
cmake を直接使用する場合、CMakeが使用する一般的な検索パスにより、ユーザー以外によるQtのインストールのほとんどがカバーされるはずです。 使用する Qt パッケージをより細かく制御するには、Qt のインストールパスを指す環境変数またはキャッシュ変数としてhttps://cmake.org/cmake/help/latest/variable/PackageName_ROOT.html Qt6_ROOT を指定するか、同様の方法でCMAKE_PREFIX_PATH に追加または付加します。 たとえば、インストールパスが"~/Qt/6.12.0/gcc_64" の場合、コマンドラインでは-DQt6_ROOT=$HOME/Qt/6.12.0/gcc_64 と指定します。
注: クロスコンパイル(WebAssembly や Android など、現在使用しているプラットフォーム以外のプラットフォーム向けにコンパイルする場合 )や、標準の `cmake` を使用する場合は、`Qt6_ROOT ` や `CMAKE_PREFIX_PATH` などの検索パスではなく、`CMAKE_TOOLCHAIN_FILE ` を設定してください。Linux では、ツールチェーンファイル(特定のターゲットプラットフォーム固有のもの)は通常、"~/Qt/6.12.0/wasm_singlethread/lib/cmake/Qt6/qt.toolchain.cmake" のようなパスにあります。 これにより、CMAKE_PREFIX_PATH 、CMAKE_FIND_ROOT_PATH 、QT_HOST_PATH などの必要な変数が設定されます。
cmake_minimum_required(VERSION 3.16)
project(helloworld)
find_package(Qt6 REQUIRED)Qt パッケージは、プロジェクトの範囲に応じて組み込む必要があるさまざまなモジュールに分割されており、最も基本的なものは
find_package(Qt6 REQUIRED COMPONENTS Core)最新の CMake は、FetchContent などの他の依存関係プロバイダもサポートしていますが、Qt の機能が CMake 自体と緊密に統合されているため、FetchContent での Qt の使用はサポートされていません。また、add_subdirectory や Git サブモジュールを介して Qt ソースを追加することもサポートされていません。
注: find_package(Qt6) を 、その関数が使用されるディレクトリ以外のサブディレクトリ内、またはfunction 内で呼び出すことは サポートされていません。そうすると、予期しない場所で様々なエラーが発生する可能性があります。
代わりに、Qt関数を使用するすべてのサブディレクトリスコープ内でfind_package(Qt6) を繰り返し呼び出すか、find_package(Qt6) の呼び出しをルートディレクトリのCMakeLists.txt に移動してください。
© 2026 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.