2014-01-31 51 views
1

這種qmake項目(*的.pro)代碼成功地在Ubuntu Linux操作系統的工作,但在Windows 8下它並不:如何正確使用QMAKE的「系統」命令輸出

win32 { 
    BUILD_TIME = $$system ("time /T") 
} 
else 
{ 
    BUILD_TIME = $$system ("time") 
} 
message($$BUILD_TIME) # output the current time 

輸出爲「時間/ T「,即命令本身而不是命令執行值。 這種行爲是一個錯誤,還是隻是我做錯了? :)

UPD:我發現另一種方式獲取當前日期:$$_DATE_。然而, 我不喜歡使用無證功能 - 這是一個壞主意。

P.S.我的目標只是生成唯一的構建ID字符串。我正在使用Qt 4.8.5。

+0

任何平凡的現實世界使用qmake'的'很遺憾不得不依賴一大堆之間除去了空間無證的功能。別擔心,他們不會被帶走。 'qmake'處於純維護模式,它意味着永遠保持穩定。如果可以的話,請使用'qbs',這將是未來。 –

+0

@KubaOber嗯,我已經在qmake中找到了'_DATE_' env變量,它可以解決我的問題 - 而且它是無證的。由於一個該死的空間對qmake解析器的影響起作用;( 而且 - 你可以舉例說明使用'qbs'的大型項目嗎? – eraxillan

+0

我使用qbs來構建Qt本身。足夠大:) –

回答

2

下面的命令正常工作對我來說:

win32 { 
    BUILD_TIME = $$system("time /T") # no spaces between 'system' command and args. 
} else { 
    BUILD_TIME = $$system("time") 
} 
message($$BUILD_TIME) # output the current time 

注意,我$$system("time /T")