CMake 看不到系统变量

CMake doesn't see system variable

本文关键字:变量 系统 看不到 CMake      更新时间:2023-10-16

为什么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/draw/Qt/5.5/gcc_64

为了检查环境变量,我使用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()

但值得一提的是,我相信qt的find_package根据它在您的路径中首先找到的qmake可执行文件来获得qt的路径。通过这种方式,您实际上不需要使用环境变量。这适用于qt4;请参阅如何指定Qt版本/位置?详细信息。

对于QT5,QT5/CMake手册规定:"为了使find_package成功,必须在CMake_PREFIX_PATH下方找到Qt 5,或者必须在CMake缓存中将QT5_DIR设置为Qt5WidgetsConfig.CMake文件的位置。使用CMake最简单的方法是将CMake_PREF IX_PATH环境变量设置为Qt 5的安装前缀。">