Как установить путь qt5 с помощью cmake find_package в Windows?

Я добавляю QT так:

find_package(Qt5 COMPONENTS Core Quick REQUIRED)
...
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Quick ${OpenCV_LIBS})

но cmake находит некоторые артефакты Python вместо ожидаемого C:\QT...

введите описание изображения здесь

Как я могу это изменить? Пытался найти несколько примеров, но не нашел четкой инструкции, какую подпапку C:\QT\ я должен указать (где угодно).

3 ответа

Решение

Мой обходной путь состоял в том, чтобы поместить желаемый QT в верхнюю часть переменной PATH. Он должен быть в PATH, если вы хотите, чтобы CMAKE его нашел.

find_package порядок поиска следующий:

  1. Поиск в кеше переменных: CMAKE_PREFIX_PATH, CMAKE_FRAMEWORK_PATH, CMAKE_APPBUNDLE_PATH
  2. Поиск в переменных окружения: <package>_DIR, CMAKE_PREFIX_PATH, CMAKE_FRAMEWORK_PATH, CMAKE_APPBUNDLE_PATH,
  3. Поиск в HINTS вариант.
  4. Поиск в PATH переменная окружения.
  5. И еще в некоторых "отчаянных" местах. Подробнее об этом здесь.

Имея это в виду, есть несколько способов предоставить правильную версию QT:

  1. Иметь переменную окружения, указывающую на правильную версию QT (например, QTDIR). И используйте его в файлах CMake:
    • лайк set(CMAKE_PREFIX_PATH "$ENV{QTDIR}")
    • или же find_package(Qt5 HINTS "$ENV{QTDIR}" COMPONENTS Core Quick REQUIRED)
  2. Иметь переменную окружения с явным именем Qt5_DIR указывая на правильную версию QT. Тогда никаких дополнительных изменений в файлах CMake не требуется.
  3. Убедитесь, что необходимая версия Qt является первой, которую можно найти в PATH переменная окружения.

Вы можете установить нажмите Add Entry кнопка в CMake Gui и добавить новую переменную под названием Qt5_DIRвыберите его тип как PATH и его значение для чего-то вроде C:\Qt\5.11.0\msvc2017_64\lib\cmake\Qt5 где 5.11.0 это версия Qt. Эта папка должна содержать Qt5Config.cmake что CMake нужно правильно настроить.

Другие вопросы по тегам