CMake 看不到系统变量
CMake doesn't see system variable
为什么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的安装前缀。">
相关文章:
- 如何访问基类向量中的子类变量?(对于实体组件系统)
- 如何设置Qt应用程序以使用类Unix系统的实际环境变量?
- 提供变量作为 MATLAB 系统命令的输入参数,以便C++可执行文件
- 将系统时间与变量进行比较 - C++
- 从系统("command") (C++) 设置变量
- 在系统( " " 中使用C++变量;
- 我们是否需要对多线程 x32 系统使用 lock 来读取或写入 uint32_t 变量
- 通过QT中的信号和插槽系统传递变量
- 从变量字符串中提升文件系统路径
- 如何在系统( "say string variable" )中使用字符串变量?
- C++中的程序如何使用"系统"变量与 Linux 中的 shell 脚本交互?
- 如何将 c ++ 变量的值传递给 hadoop HDFS 的 bash 系统命令?
- 在C++的系统中执行变量(" " )
- 在Boost文件系统中使用环境变量
- Visual studio 2012中针对包含系统变量的IntelliSense问题
- 映射多变量/层系统的泛化
- 将系统(char* 命令)的输出加载到变量 c++
- Wt Dbo MySQL 后端连接错误"SET storage_engine=INNODB;":未知的系统变量'storage_engine'
- 在c++中使用变量作为系统()输入而不使用c_str()
- 代码块编译的exe链接到一个没有系统路径变量(C++)的dll