How to set qt5 path with cmake find_package on Windows?
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.
find_package
search order is following:
- Search in cache variables:
CMAKE_PREFIX_PATH
,CMAKE_FRAMEWORK_PATH
,CMAKE_APPBUNDLE_PATH
- Search in environment variables:
<package>_DIR
,CMAKE_PREFIX_PATH
,CMAKE_FRAMEWORK_PATH
,CMAKE_APPBUNDLE_PATH
. - Search in the
HINTS
option. - Search the
PATH
environment variable. - 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:
- 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)
- like
- Have an environment variable explicitly named
Qt5_DIR
pointing to the proper version of QT. Then no additional changes to CMake files are required. - Make sure that required version of Qt is the first one to be found in the
PATH
environment variable, for example, for windowsC:\Qt\Qt5.10.1\5.10.1\msvc2017_64
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.