Cmake не находит Qt4

Так как 4.8.0 отсутствует, я переустановил Qt, и теперь я тоже хочу использовать cmake. Чтобы сделать работу cmake, я помню, что нужно добавить папку bin mingw (QtSDK\Desktop\Qt\4.7.3) в PATH обратно в Qt4.7.3, поэтому я догадался, что теперь будет похожая папка в 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)

Ответ 1

Итак, я узнал, в чем проблема, и я думаю, что должен был знать раньше. Я просто добавил 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.

Ответ 2

Вам просто нужно установить путь qmake в QT_QMAKE_EXECUTABLE, а затем cmake может использовать qmake -query, чтобы найти все остальные пути, которые ему нужны (аналогично pkg-config в Linux).

Шагами для создания проекта с использованием Qt и CMake обычно являются:

  • Откажитесь/создайте исходную папку проекта
  • Создать папку сборки вне папки проекта
  • Запустите командную строку Qt/ cmd и cd в папку сборки, например. cd build\project
  • Запуск cmake или cmake-gui, проходящий путь к исходной папке, например. cmake-gui ..\..\source\project
  • Задайте любые переменные, такие как QT_QMAKE_EXECUTABLE и CMAKE_BUILD_TYPE
  • Запустите инструмент сборки или запустите cmake --build .

Ответ 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

У меня была эта проблема по несколько иной причине. Возможно, это поможет кому-то еще:

Я удалил Qt 4.8.3, а затем установил qt 4.8.4. На основании ответа Slava я обнаружил, что CMake получает значение $(qt_install_version} из:

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

По-прежнему установлено значение 4.8.3, хотя все остальные записи в реестре были обновлены до 4.8.4. Изменение значения ключа 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 требуемый qmake, требуемый как значение QT_QMAKE_EXECUTABLE, для моей ОС хранится на пути /opt/qt-4.8.7/bin/qmake. Надеюсь на эту помощь.