2014-10-01 79 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變量。