2015-08-05 4 views
2

Почему CMake не видит мою системную переменную?CMake не видит системную переменную

if (NOT DEFINED $ENV{QT_LIBS_DIR}) 
    message(FATAL "You need to have system-wide variable with path to Qt libs") 
    set(QT_CMAKE_MODULES_FOUND FALSE) 
elseif(NOT DEFINED $ENV{QT_LIBS_DIR}) 
    set(QT_CMAKE_MODULES "$ENV{QT_LIBS_DIR}/lib/cmake" CACHE PATH "CMake's modules which provided by Qt itself for Qt bindings") 
    set(QT_CMAKE_MODULES_FOUND TRUE) 
endif(NOT DEFINED $ENV{QT_LIBS_DIR}) 

У меня роковая ошибка. Пожалуйста, помогите мне разобраться. Btw для:

$ echo $QT_LIBS_DIR 

выход: /home/drew/Qt/5.5/gcc_64

ответ

3

Для проверки переменных окружения я использую if ("$ENV{QT_LIBS_DIR}" STREQUAL ""), чтобы увидеть, если переменная среды определена. Так что ваш пример будет выглядеть так:

if ("$ENV{QT_LIBS_DIR}" STREQUAL "") 
    message(FATAL "You need to have system-wide variable with path to Qt libs") 
    set(QT_CMAKE_MODULES_FOUND FALSE) 
elseif() 
    set(QT_CMAKE_MODULES "$ENV{QT_LIBS_DIR}/lib/cmake" CACHE PATH "CMake's modules which provided by Qt itself for Qt bindings") 
    set(QT_CMAKE_MODULES_FOUND TRUE) 
endif() 

Но для чего это стоит, я считаю, что find_package для Qt получает путь для Qt в соответствии с QMAKE исполняемого файла, который он находит первым в своем пути. Таким образом, вам не нужно использовать переменную среды. Это относится к qt4; см. How specify Qt version/location?.

Для QT5, то Qt5/CMake manual говорит: «Для того, чтобы find_package, чтобы быть успешным, Qt 5 должны быть найдены ниже CMAKE_PREFIX_PATH или Qt5_DIR должен быть установлен в кэше CMake к местоположению файла Qt5WidgetsConfig.cmake. Простейший способ использования CMake - установить переменную среды CMAKE_PREFIX_PATH в установочный префикс Qt 5. "

+0

Благодарю @Phil. О вашем замечании: у меня нет qt, установленного через диспетчера пакетов. Поэтому даже 'whereis qmake' приводит меня к пустым выводам. – drewpts

+1

Qt не требуется устанавливать. Вы можете иметь несколько версий qt во многих разных местах. Если вы не разделили файл на минимум, вы должны иметь '' bin/qmake''. Для qt4 просто поместите это в свой '' PATH'', а find_package должен корректно установить переменные cmake для qt. Для Qt5 просто добавьте '' -DQt5_DIR'' в свою командную строку для вашего шага настройки cmake, и find_package должен работать. – Phil

Смежные вопросы