用CMake找到Qt:缺少moc,uic,rcc

时间:2013-10-08 17:33:27

标签: windows qt qt4 cmake

我正在尝试修复自定义内置Qt的安装。我正在使用this very similar question中的qt.conf。但是,CMake 2.8.7仍然无法找到moc,uic和rcc。

CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE):
  Could NOT find Qt4 (missing: QT_MOC_EXECUTABLE QT_RCC_EXECUTABLE
  QT_UIC_EXECUTABLE) (found suitable exact version "4.8.1")

我已手动将QT_QMAKE_EXECUTABLE变量设置为正确的值,即B:/lib/vs10/Qt-4.8.1-VS10x64/bin/qmake.exe。部署qt.conf文件后,qmake -v将返回正确的路径:

c:\>B:/lib/vs10/Qt-4.8.1-VS10x64/bin/qmake.exe -v
QMake version 2.01a
Using Qt version 4.8.1 in B:/lib/vs10/Qt-4.8.1-VS10x64/lib

qmake -query QT_INSTALL_PREFIX也会返回正确的路径。请注意,我不能使用环境变量,因为我们需要为不同的项目使用不同的Qt版本。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

您应该将CMAKE_PREFIX_PATH设置为B:/lib/vs10/Qt-4.8.1-VS10x64/bin,而不是设置QT_QMAKE_EXECUTABLE。它将帮助cmake找到所有qt可执行文件。

答案 1 :(得分:1)

问题在于他们决定将QT_BINARY_DIR变为CACHE INTERNAL变量,在更改qt.conf并删除CMake中的QT_*变量后,该变量未正确重置。仅当QT_BINARY_DIR的路径发生更改时,才会重置qmake.exe。清除缓存后,它工作正常。

我从中吸取的教训:不要使用CACHE INTERNAL,只使用FORCEmark_as_advanced