2012-03-29 110 views
11

由于4.8.0不存在,我重新安装了Qt,现在我也想用cmake。为了使cmake工作,我记得不得不在Qt4.7.3中将PATCH添加到PATH中,所以我猜想现在会有类似的文件夹在QtSDK\Desktop\Qt\4.8.0中,但事实并非如此。我的问题是,其他人是否有设置Qt和cmake的经验?我现在可以使用一些帮助,因为我已经搜索了一下,并且找不到任何方法让cmake工作。cmake找不到Qt4

当试图建立,我得到这个众所周知的消息:

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) 
+0

我很确定我所要做的只是确保我的QT_ROOT环境变量已设置(C:\ Qt \ 4.8.0 \在我的机器上)。 – tmpearce 2012-03-29 21:47:54

+0

@tmpearce:你的意思是在CMakeLists.txt中?如果没有,请问如何添加? – Neko 2012-03-29 23:51:27

+0

我要走“c:\ ...”路径来假设你在windows中。从右键点击“我的电脑”上下文菜单,你可以找到自己的方式来“环境变量”。谷歌它,如果你需要更多的帮助,我没有在家里的Windows在这里。一旦你在那里,你可以创建一个新的环境变量(“PATH”通常是一个,作为例子),如果你需要(我在我的第一评论中描述的那个)。 – tmpearce 2012-03-30 01:01:34

回答

4

所以,我发现了什么问题,我想我应该知道之前。我只是将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。注意区别; msvc2010 vs mingw。这实际上非常明显,因为msvc2010是该目录中唯一的文件夹。

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

8

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

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

  1. 退房/创建项目的源文件夹
  2. 创建build文件夹中的项目文件夹
  3. 开始Qt的命令提示符/ cmdcd外进入生成文件夹如cd build\project
  4. 运行cmake或cmake-gui将路径传递到源文件夹例如cmake-gui ..\..\source\project
  5. 设置任何变量,如QT_QMAKE_EXECUTABLECMAKE_BUILD_TYPE
  6. 运行构建工具,或运行cmake --build .
+0

VTK指令表示使用标志'-DQT_QMAKE_EXECUTABLE:PATH =/path/to/qmake',但这不适用于我。 – 2017-03-20 15:09:52

2

恰好碰到了同样的问题......看看到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") 

您可以ALTER注册表项,或者,我个人比较喜欢全部删除所有的按键,修改$ ENV {QTDIR }变量。祝你好运。

+0

非常感谢!我刚刚卸载了4.8.5-vs2010并安装了4.8.5-mingw,安装程序搞砸了一些东西。我追踪了'findQt4.cmake'文件,但没有找到问题。你的帖子指出我在HKCU的'Versions',我发现它是空的。事实证明,安装程序以某种方式将该条目置于错误的帐户下!我非常确定,我将安装程序作为“我自己”运行,而不是在第二台桌面上运行。无论如何,我将“第二版”中的“版本”移到了我的目录中,现在cmake正确地找到了Qt4。此外,值得注意的是,将密钥放在全球HKLM不起作用。 – quetzalcoatl 2014-02-19 15:38:30

2

我有一个稍微不同的原因这个问题。也许这会帮助别人:

我卸载了Qt 4.8.3,然后安装了qt 4.8.4。基于斯拉瓦的答案,我发现,CMake的越来越$(qt_install_version从值}:

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

这仍设置为4.8.3即使所有其他注册表项被更新到4.8.4更改DefaultVersion键的值为4.8.4解决了我的问题。

0

我有同样的问题,我解决了提供给qmake的路径,

QT_QMAKE_EXECUTABLE /opt/qt-4.8.7/bin/qmake 

在Mac,而二进制文件保存在/usr/local/Trolltech/Qt-4.8.7/bin 所需的qmake作为QT_QMAKE_EXECUTABLE的价值需要的是,我的OS,存储在路径/opt/qt-4.8.7/bin/qmake中。希望这个帮助。