我定制的Linux发行版。
我试图从 Qt 项目文件(使用message()
指令)打印一个在shell中正确打印的环境变量。当qmake从同一个shell实例运行时,在打印的消息中看起来变量是空的。
我使用命令message($$(ENVI_VAR))
,根据Qt网站,在qmake运行时应获取变量的值(还有$(ENVI_VAR)
语法,而不是在 Makefile 运行)
我错过了什么?
由于
修改
实际上,不仅qmake
,而且我运行的每个进程,也是脚本执行,都无法看到环境变量。只有shell才能。
答案 0 :(得分:0)
我只在.bashrc
文件中定义了变量,但我错过了export
答案 1 :(得分:0)
通常,全局变量值用作.pro
文件中的自定义变量。我在这里reference向Qt doc提供具体细节如何执行此操作:
“变量可用于存储环境变量的内容。这些变量可以在运行qmake时进行评估,也可以在生成的Makefile中包含,以便在构建项目时进行评估。
要在qmakeis运行时获取环境值的内容,请使用$$(...)运算符:
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时正确设置了环境变量,这就使构建过程更加灵活。“
答案 2 :(得分:0)
在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
变量。