问题 cmake没有找到Qt4


由于4.8.0已经出来,我重新安装了Qt,现在我也想使用cmake。为了使cmake工作,我记得必须添加mingw bin文件夹(QtSDK\Desktop\Qt\4.7.3)回到Qt4.7.3中的PATH,所以我猜测会有一个类似的文件夹 QtSDK\Desktop\Qt\4.8.0 现在但事实并非如此。我的问题是,有没有其他人有设置Qt和cmake的经验?我现在可以使用一些帮助,因为我已经google了一下,无法找到任何方法来使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)

6428
2018-03-29 21:38


起源

我很确定我所要做的就是确保我的QT_ROOT环境变量已设置(我机器上的C:\ Qt \ 4.8.0 \)。 - tmpearce
@tmpearce:在CMakeLists.txt中你的意思是?如果没有,你能否加入如何做到这一点? - Neko
我要离开“c:\ ...”路径,假设你在窗口。从右键单击“我的电脑”上下文菜单中,您可以找到“环境变量”的方法。谷歌如果你需要更多的帮助,我家里没有Windows。一旦你在那里,你可以创建一个新的环境变量(“PATH”通常是一个,作为一个例子),如果你需要(我在我的第一个评论中描述的那个)。 - tmpearce


答案:


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

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

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

8
2018-03-30 07:43



VTK指令说要使用flag -DQT_QMAKE_EXECUTABLE:PATH=/path/to/qmake,但这不适合我。 - Doctor Mohawk


所以,我发现了什么问题,我想我以前应该知道。我简单地说 C:\QtSDK\Desktop\Qt\4.8.0\msvc2010\bin 到我的PATH变量。值得注意的是,在默认的4.8.0安装中,qmake位于 C:\QtSDK\Desktop\Qt\4.8.0\msvc2010\bin 而不是 C:\QtSDK\Desktop\Qt\4.7.3\mingw\bin 在4.7.3。注意区别; msvc2010 VS mingw。它实际上非常明显,因为 msvc2010 是该目录中唯一的文件夹。

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


4
2018-04-02 12:32





刚遇到同样的问题......看看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}变量。祝你好运。


2
2018-05-15 15:08



非常感谢!我刚刚卸载4.8.5-vs2010并安装了4.8.5-mingw,安装人员搞砸了什么。我跟踪了 findQt4.cmake 文件,但没有找到问题。你的帖子把我指向了 Versions 在HKCU,我发现...空。事实证明,安装程序以某种方式将该条目置于错误的帐户下!我非常确定我将安装程序作为“我,我自己”运行,而不是在第二个桌面上运行。无论如何,我感动了 Versions 从那个第二个帐户到我的,并且cmake现在正确找到Qt4。此外,值得注意的是,将全球密钥放在HKLM上并不起作用。 - quetzalcoatl


我出现这个问题的原因略有不同。也许这会帮助别人:

我卸载了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为我解决了问题。


2
2018-06-07 17:29





我有同样的问题,我解决了提供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 。希望这也有帮助。


0
2018-06-08 08:32