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
. Надеюсь на эту помощь.