Qt 项目文件没有看到环境变量
Posted
技术标签:
【中文标题】Qt 项目文件没有看到环境变量【英文标题】:Qt project file is not seeing an enviroment variable 【发布时间】:2014-10-01 10:38:09 【问题描述】:我使用的是定制的 Linux 发行版。
我正在尝试从 Qt 项目文件(使用 message()
指令)中打印一个在 shell 中正确打印的环境变量。当 qmake 从同一个 shell 实例运行时,在打印的消息中看起来变量是空的。
我正在使用命令 message($$(ENVI_VAR))
,根据 Qt 网站,它应该在 qmake 运行时获取变量的值(还有 $(ENVI_VAR)
语法,而是在 Makefile强>运行)
我错过了什么?
谢谢
编辑:
其实不仅qmake
,我运行的每一个进程,也是脚本执行,都看不到环境变量。只有外壳可以。
【问题讨论】:
您是否尝试过 $$system( echo $ENVI_VAR ) 来获取 var 的值? 如何以及在哪里设置ENVI_VAR
?
@vahancho in .bashrc
@N1ghtLight 现在试过了,但是不行
【参考方案1】:
我只在.bashrc
文件中定义了变量,但我错过了export
【讨论】:
【参考方案2】:通常全局变量值用作.pro
文件中的自定义变量。我将reference 放在 Qt 文档中,其中包含具体的操作方法:
“变量可以用来存储环境变量的内容。这些可以在qmake运行时进行评估,或者在项目构建时包含在生成的Makefile中进行评估。
要在qmake运行时获取环境值的内容,使用$$(...)操作符:
DESTDIR = $$(PWD)
message(The project will be installed in $$DESTDIR)
在上面的赋值中,PWD环境变量的值是在处理项目文件时读取的。
要在处理生成的 Makefile 时获取环境值的内容,请使用 $(...) 运算符:
DESTDIR = $$(PWD)
message(The project will be installed in $$DESTDIR)
DESTDIR = $(PWD)
message(The project will be installed in the value of PWD)
message(when the Makefile is processed.)
在上面的赋值中,PWD的值是在处理项目文件时立即读取的,但是在生成的Makefile中将$(PWD)赋值给DESTDIR。这使得构建过程更加灵活,只要在处理 Makefile 时正确设置了环境变量。”
【讨论】:
问题最终与 linux 相关,而不是与 Qt 相关。抱歉,我不知道如何关闭主题【参考方案3】:在message()
中由于某种原因需要使用不同的符号:
message(DESTDIR: ($$DESTDIR))
我今天遇到了这样的问题。只能通过查看 Qt mailing list 中的 qmake .pro 文件示例来解决。另一个可能的问题 - clue variables:
# $VAR notation allows to append the contents of the variable to another value
# without separating the two with a space
isEmpty(DESTDIR): DESTDIR = $$IDE_BUILD_TREE/lib/qtcreator/plugins
没有这样的符号,我得到了空的 DESTDIR
变量。
【讨论】:
以上是关于Qt 项目文件没有看到环境变量的主要内容,如果未能解决你的问题,请参考以下文章
centos下Qt项目编译的包含多个so库的软件,不能双击执行
QT creator如何在Ubuntu中配置环境变量path