2014-10-01 81 views
0

我在定制的Linux发行版上。 我试图从Qt项目文件(使用message()指令)打印一个环境变量,该环境变量正确地打印在shell中。当qmake从同一个shell实例运行时,在打印的消息中看起来像变量是空的。Qt项目文件没有看到环境变量

我使用的命令message($$(ENVI_VAR))其中根据Qt的网站,QMAKE运行时应该得到的变量的值(也有个$(ENVI_VAR)语法,而不是被评估时,的Makefile运行)

我错过了什么?

感谢

编辑: 其实,不仅qmake,但每一个过程中,我跑,也是一个脚本执行,看不到的环境变量。只有壳可以。

+0

你试过$$系统(echo $ ENVI_VAR)来获取var的值吗? – 2014-10-01 10:54:01

+0

你如何以及在哪里设置'ENVI_VAR'? – vahancho 2014-10-01 10:54:49

+0

@vahancho in。bashrc – nyarlathotep108 2014-10-01 12:41:35

回答

0

我只定义的变量在.bashrc文件,但我缺少的值被用作.pro文件内自定义变量的export

0

通常全局变量。我将​​放在Qt文档中,具体细节如何操作:

“变量可以用来存储环境变量的内容,这些可以在qmake运行的时候进行评估,或者包含在当项目建成产生的Makefile评价

为了获得环境价值的内容时qmakeis运行,使用$$(...)操作:

DESTDIR = $$(PWD) 
message(The project will be installed in $$DESTDIR) 

在上面的分配,在处理项目文件时读取PWD环境变量的值

为了获得在时间的环境值的内容处理时所生成的生成文件,使用$(...)运算符:

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处理“

+0

这个问题最终导致与linux相关,而不是与Qt相关。对不起,我不知道如何关闭这个话题 – nyarlathotep108 2014-10-07 14:21:25

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变量。