How to set qt5 path with cmake find_package on Windows?

我与影子孤独终老i 提交于 2019-12-07 17:39:11

问题


I am adding QT like this:

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

but cmake finds some python artifacts instead of expected C:\QT...

How can I change this? Tried to find some examples, but didn't find any clear instruction, which subfolder of C:\QT\ I should specify (any where).


回答1:


find_package search order is following:

  1. Search in cache variables: CMAKE_PREFIX_PATH, CMAKE_FRAMEWORK_PATH, CMAKE_APPBUNDLE_PATH
  2. Search in environment variables: <package>_DIR, CMAKE_PREFIX_PATH, CMAKE_FRAMEWORK_PATH, CMAKE_APPBUNDLE_PATH.
  3. Search in the HINTS option.
  4. Search the PATH environment variable.
  5. And in some more "desperate" places. More about that here.

With that in mind there are several ways to provide a proper version to QT:

  1. Have an environment variable pointing to the proper version of QT (e.g. QTDIR). And use it in the CMake files:
    • like set(CMAKE_PREFIX_PATH "$ENV{QTDIR}")
    • or find_package(Qt5 HINTS "$ENV{QTDIR}" COMPONENTS Core Quick REQUIRED)
  2. Have an environment variable explicitly named Qt5_DIR pointing to the proper version of QT. Then no additional changes to CMake files are required.
  3. Make sure that required version of Qt is the first one to be found in the PATH environment variable, for example, for windows C:\Qt\Qt5.10.1\5.10.1\msvc2017_64



回答2:


You can set click the Add Entry button in CMake Gui and add a new variable called Qt5_DIR, select its type as PATH and its value to something like C:\Qt\5.11.0\msvc2017_64\lib\cmake\Qt5 where 5.11.0 is the Qt version. This folder must contain Qt5Config.cmake that CMake needs to set things up correctly.




回答3:


My workaround was to put desired QT to the top of PATH variable. It has to be in PATH if you want CMAKE to find it.



来源:https://stackoverflow.com/questions/50764721/how-to-set-qt5-path-with-cmake-find-package-on-windows

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!