如何在 Windows 上使用 cmake find_package 设置 qt5 路径?

How to set qt5 path with cmake find_package on Windows?

我是这样添加QT的:

find_package(Qt5 COMPONENTS Core Quick REQUIRED)
...
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Quick ${OpenCV_LIBS})

但是 cmake 发现了一些 python 工件而不是预期的 C:\QT...

我该如何更改?试图找到一些示例,但没有找到任何明确的说明,我应该指定 C:\QT\ 的哪个子文件夹(任何位置)。

您可以在 CMake Gui 中设置单击 Add Entry 按钮并添加一个名为 Qt5_DIR 的新变量,select 其类型为 PATH,其值类似于C:\Qt.11.0\msvc2017_64\lib\cmake\Qt5 其中 5.11.0 是 Qt 版本。此文件夹必须包含 CMake 正确设置所需的 Qt5Config.cmake

我的解决方法是将所需的 QT 放在 PATH 变量的顶部。如果你想让 CMAKE 找到它,它必须在 PATH 中。

find_package 搜索顺序如下:

  1. 缓存变量中搜索: CMAKE_PREFIX_PATHCMAKE_FRAMEWORK_PATHCMAKE_APPBUNDLE_PATH
  2. 环境变量中搜索:<package>_DIRCMAKE_PREFIX_PATHCMAKE_FRAMEWORK_PATHCMAKE_APPBUNDLE_PATH.
  3. HINTS 选项中搜索。
  4. 搜索 PATH 环境变量。
  5. 还有更多 "desperate" 个地方。更多关于 here.

考虑到这一点,有几种方法可以为 QT 提供合适的版本:

  1. 有一个环境变量指向正确的 QT 版本(例如 QTDIR)。并在 CMake 文件中使用它:
    • 喜欢set(CMAKE_PREFIX_PATH "$ENV{QTDIR}")
    • find_package(Qt5 HINTS "$ENV{QTDIR}" COMPONENTS Core Quick REQUIRED)
  2. 有一个明确命名为 Qt5_DIR 的环境变量指向正确的 QT 版本。然后不需要对 CMake 文件进行额外的更改。
  3. 确保所需的 Qt 版本是第一个在 PATH 环境变量中找到的版本,例如 windows C:\Qt\Qt5.10.1.10.1\msvc2017_64