Qt 如何正确使用qmake';s";系统“;命令输出

Qt 如何正确使用qmake';s";系统“;命令输出,qt,build,qt4,qmake,Qt,Build,Qt4,Qmake,这样的qmakeproject(*.pro)代码在Ubuntu Linux下可以成功运行,但在Windows 8下却不能: win32 { BUILD_TIME = $$system ("time /T") } else { BUILD_TIME = $$system ("time") } message($$BUILD_TIME) # output the current time 输出为“时间/T”,即命令本身,而不是命令执行值。 这种行为是错误的,还是我做错了 UPD:我

这样的
qmake
project(*.pro)代码在Ubuntu Linux下可以成功运行,但在Windows 8下却不能:

win32 {
    BUILD_TIME = $$system ("time /T")
}
else
{
    BUILD_TIME = $$system ("time")
}
message($$BUILD_TIME) # output the current time
输出为“时间/T”,即命令本身,而不是命令执行值。 这种行为是错误的,还是我做错了

UPD:我找到了获取当前日期的另一种方法:
$\u date\u
。然而, 我不喜欢使用未记录的功能-这是个坏主意


另外,我的目标只是生成唯一的构建ID字符串。我正在使用Qt 4.8.5。

以下命令对我来说很好:

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”)

之间的空格。不幸的是,任何对
qmake
的非平凡的实际使用都必须依赖于大量未记录的特性。别担心,它们不会从你身边夺走的
qmake
处于纯维护模式,它意味着“永远”保持稳定。如果可以,请使用
qbs
,这将是未来。@KubaOber-Hm,我已经在qmake中找到了
\u DATE\u
env变量,它可以替代地解决我的问题-而且它没有文档记录。作为一个该死的空间对qmake解析器工作的影响;(还有-你能举一个使用
qbs
的大型项目的例子吗?我使用qbs来构建Qt本身。我不知道这是否足够大:)@KubaOber是的,它是:)但据我所知
qbs
还没有准备好用于生产-例如,Qt创建者不允许创建基于qbs的Qt项目,只有非Qt-one oO