【问题标题】:cmake not finding Qt4cmake没有找到Qt4
【发布时间】:2012-04-13 14:31:37
【问题描述】:

自从 4.8.0 出来了,我已经重新安装了 Qt,现在我也想使用 cmake。为了使 cmake 工作,我记得必须在 Qt4.7.3 中将 mingw bin 文件夹 (QtSDK\Desktop\Qt\4.7.3) 添加到 PATH 中,所以我猜想现在QtSDK\Desktop\Qt\4.8.0 中会有一个类似的文件夹,但事实并非如此。我的问题是,还有其他人有设置 Qt 和 cmake 的经验吗?我现在可以使用一些帮助,因为我已经用谷歌搜索了一段时间,但找不到任何方法让 cmake 工作。

在尝试构建时,我收到了这条众所周知的消息:

CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:91 (MESSAGE):
  Could NOT find Qt4 (missing: QT_QMAKE_EXECUTABLE QT_INCLUDE_DIR)
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:252 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindQt4.cmake:1171 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:3 (find_package)

【问题讨论】:

  • 我很确定我所要做的就是确保设置了我的 QT_ROOT 环境变量(我的机器上的 C:\Qt\4.8.0\)。
  • @tmpearce:你的意思是在 CMakeLists.txt 中?如果没有,您能否添加如何执行此操作?
  • 我要离开“c:\...”路径,假设您在 Windows 中。从右键单击“我的电脑”上下文菜单中,您可以找到“环境变量”的方式。如果您需要更多帮助,请在 Google 上搜索,我家没有 Windows。一旦你在那里,你可以创建一个新的环境变量(“PATH”通常是一个,例如)如果你需要(我在第一条评论中描述的那个)。

标签: qt compiler-construction cmake


【解决方案1】:

你只需要在QT_QMAKE_EXECUTABLE中设置qmake的路径,然后cmake就可以使用qmake -query找到它需要的所有其他路径(类似于Linux上的pkg-config)。

使用 Qt 和 CMake 构建项目的步骤通常是:

  1. 签出/创建项目源文件夹
  2. 在项目文件夹外创建构建文件夹
  3. 启动 Qt 命令提示符/cmdcd 进入构建文件夹,例如cd build\project
  4. 运行 cmake 或 cmake-gui 将路径传递到源文件夹,例如cmake-gui ..\..\source\project
  5. 设置任何变量,例如QT_QMAKE_EXECUTABLECMAKE_BUILD_TYPE
  6. 运行您的构建工具,或运行cmake --build .

【讨论】:

  • VTK 指令说使用标志-DQT_QMAKE_EXECUTABLE:PATH=/path/to/qmake,但这对我不起作用。
【解决方案2】:

所以,我发现了问题所在,我想我之前应该知道。我只是将C:\QtSDK\Desktop\Qt\4.8.0\msvc2010\bin 添加到我的PATH 变量中。需要注意的是,在默认的 4.8.0 安装中,qmake 位于 C:\QtSDK\Desktop\Qt\4.8.0\msvc2010\bin 而不是 4.7.3 中的 C:\QtSDK\Desktop\Qt\4.7.3\mingw\bin。注意区别; msvc2010mingw。这实际上非常明显,因为msvc2010 是该目录中唯一的文件夹。

我没有尝试 skyhisi 的答案,因为它不再需要,但我猜这是使 cmake 工作的另一种正确(如果不是更好)的方法。

【讨论】:

    【解决方案3】:

    刚遇到同样的问题...看看findQt4.cmake

    FIND_PROGRAM(QT_QMAKE_EXECUTABLE NAMES qmake qmake4 qmake-qt4 qmake-mac PATHS
       "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/bin"
       "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/bin"
       "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\${qt_install_version};InstallDir]/bin"
       $ENV{QTDIR}/bin
       DOC "The qmake executable for the Qt installation to use")
    

    您可以更改注册表项,或者,我个人更喜欢完全删除所有这些项并修改 $ENV{QTDIR} 变量。祝你好运。

    【讨论】:

    • 非常感谢!我刚刚卸载了 4.8.5-vs2010 并安装了 4.8.5-mingw,安装程序搞砸了。我追踪了findQt4.cmake 文件,但没有发现问题。您的帖子将我指向 HKCU 的 Versions,我发现它是空的。事实证明,安装程序以某种方式将条目放在了错误的帐户下!我完全确定我以“我,我自己”的身份运行安装程序,而不是在第二个桌面上。无论如何,我将Versions 从第二个帐户移到了我的帐户,cmake 现在可以正确找到 Qt4。此外,值得注意的是,将全局密钥放在 HKLM 是行不通的。
    【解决方案4】:

    我遇到这个问题的原因略有不同。也许这会对其他人有所帮助:

    我卸载了 Qt 4.8.3,然后安装了 qt 4.8.4。根据 Slava 的回答,我发现 CMake 正在从以下位置获取 $(qt_install_version} 的值:

    [HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\DefaultVersion]
    

    即使所有其他注册表项都已更新为 4.8.4,它仍设置为 4.8.3。将 DefaultVersion 键的值更改为 4.8.4 解决了我的问题。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题,我解决了提供 qmake 的路径,

       QT_QMAKE_EXECUTABLE   /opt/qt-4.8.7/bin/qmake
      

      在 Mac 上,二进制文件保存在 /usr/local/Trolltech/Qt-4.8.7/bin 对于我的操作系统,作为 QT_QMAKE_EXECUTABLE 的值所需的 qmake 存储在路径 /opt/qt-4.8.7/bin/qmake 中。希望这也能有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-28
        • 1970-01-01
        • 1970-01-01
        • 2018-09-16
        • 1970-01-01
        • 1970-01-01
        • 2013-02-25
        • 1970-01-01
        相关资源
        最近更新 更多