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

11

我是这样添加 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\的哪个子文件夹(任何一个都可以)。

3个回答

14

find_package 搜索顺序如下:

  1. 缓存变量中搜索: CMAKE_PREFIX_PATHCMAKE_FRAMEWORK_PATHCMAKE_APPBUNDLE_PATH
  2. 环境变量中搜索:<package>_DIRCMAKE_PREFIX_PATHCMAKE_FRAMEWORK_PATHCMAKE_APPBUNDLE_PATH
  3. HINTS 选项中搜索。
  4. PATH 环境变量中搜索。
  5. 还有一些更“绝望”的地方。点击这里获取更多信息。

有了这个概念,就有几种提供正确版本给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文件进行其他更改。
  • 确保所需的 Qt 版本是在 PATH 环境变量中第一个被找到的,例如在 Windows 下路径为 C:\Qt\Qt5.10.1\5.10.1\msvc2017_64

  • 有一个更简单的替代方案,也是标准方法:在配置时设置cmake变量。只需运行cmake-gui并将“Qt5_dir”设置为指向所需Qt5版本安装路径即可。 - RAM
    确保所需版本的Qt是在PATH环境变量中首先被找到的。例如? - zwcloud
    1
    C:\Qt\Qt5.10.1C:\Qt\Qt5.10.1\5.10.1\msvc2017_64C:\Qt\Qt5.10.1\5.10.1\msvc2017_64\lib\cmake\Qt5 - zwcloud
    @zwcloud,“msvc2017_64”是Windows的正确版本。 - Teivaz

    5
    您可以在CMake Gui中单击“添加条目”按钮,然后添加一个名为Qt5_DIR的新变量,将其类型设置为PATH,并将其值设置为类似于C:\Qt\5.11.0\msvc2017_64\lib\cmake\Qt5的内容,其中5.11.0是Qt的版本号。该文件夹必须包含Qt5Config.cmake,以便CMake正确设置环境。

    感谢您准确地描述了要设置哪个路径。我不知道QT中有一些隐藏的cmake文件。需要提醒Windows用户的一件事是,在设置环境变量后,应重新启动计算机,否则它们将不会生效。给你点赞。 - Philli
    @Philli 如果你通过开始菜单或cmd/powershell等方式启动应用程序,它将生效,而不是通过文件资源管理器。此外,在某些情况下,你不需要全局保存它,只需在执行命令之前添加SET Qt5_DIR=.....即可。 - Alex P.

    2

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


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接