CMakeによるQt6プロジェクトビルドエラーの解決方法

CMake Error at project_gui/CMakeLists.txt:15 (find_package):
  Could not find a package configuration file provided by "QT" with any of
  the following names:

    Qt6Config.cmake
    qt6-config.cmake
    Qt5Config.cmake
    qt5-config.cmake

  Add the installation prefix of "QT" to CMAKE_PREFIX_PATH or set "QT_DIR" to
  a directory containing one of the above files.  project_gui	C:\Dev\QtProject\project_gui/CMakeLists.txt	15

環境変数の設定 QtのlibおよびbinディレクトリをPath環境変数に追加します。find_packageコマンドはこのパスから自動的に設定ファイルを検索します。

find_package()の動作原理

  1. 基本機能 find_package()は外部ライブラリのヘッダーファイルとライブラリパスを自動検出し、以下のコマンドで使用可能にします:
  • include_directories() / target_include_directories():インクルードパス設定
  • link_directories() / target_link_libraries():ライブラリリンク設定
  1. Moduleモード(従来方式) 動作フロー
  2. CMakeがCMAKE_MODULE_PATHで指定されたパスからFind<PackageName>.cmakeを検索
  3. スクリプトがライブラリパスとヘッダーファイルを探索
  4. <PackageName>_FOUND, <PackageName>_INCLUDE_DIRSなどの変数を設定

実装例

list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
find_package(LibPNG REQUIRED)
if(LibPNG_FOUND)
  target_include_directories(app PRIVATE ${LibPNG_INCLUDE_DIRS})
  target_link_libraries(app ${LibPNG_LIBRARIES})
endif()
  1. Configモード(現代方式) 動作フロー
  2. <PackageName>Config.cmakeまたは<package-name>-config.cmakeを検索
  3. 優先検索パス:<PackageName>_DIR → CMAKE_PREFIX_PATH → システムパス
  4. ライブラリ提供者が定義したインポートターゲットを自動処理

実装例

set(Boost_DIR "C:/boost_1_82_0/lib/cmake")
find_package(Boost REQUIRED COMPONENTS system filesystem)
if(Boost_FOUND)
  target_link_libraries(app PRIVATE Boost::system Boost::filesystem)
endif()
  1. 動作モードの制御
  • デフォルト:Moduleモード優先 → Configモードにフォールバック
  • 明示的指定:find_package(Pkg CONFIG) / find_package(Pkg MODULE)
  • デバッグオプション:cmake -DCMAKE_FIND_DEBUG_MODE=ON ..
  1. ベストプラクティス
  • Configモードを優先使用
  • パスを明示的に指定:CMAKE_PREFIX_PATHまたは<PackageName>_DIR
  • バージョン指定:find_package(Qt6 6.5.1 EXACT REQUIRED)
  1. トラブルシューティング | 問題 | 解決策 | |---|---| | ライブラリ未検出 | set(Qt6_DIR "正しいパス") で明示的指定 | | バージョン不一致 | EXACTオプションで厳密なバージョン指定 | | コンポーネント不足 | COMPONENTSで必須モジュールを明示 |

動作モード比較

モード トリガー 設定ファイル 適用ケース
Module デフォルト/MODULE指定 Find<Package>.cmake レガシーライブラリ
Config デフォルト/CONFIG指定 <Package>Config.cmake Qt6など現代ライブラリ

タグ: CMake Qt VisualStudio ビルドエラー

8月5日 19:36 投稿