【发布时间】:2015-07-05 22:09:00
【问题描述】:
我正在使用批处理文件来增加最后一个版本号。我将它设置为.pro 文件中的一个变量,然后在我的main.cpp 中尝试将Qstring 设置为版本号,然后使用QDebug 来查看该数字是否正确。到目前为止,尚未调用批处理文件,并且在将 QString 设置为版本号时,最后一个 args 是“太少”并带有警告消息。
.pro 文件有问题:
VERSION_MAJOR = 1
VERSION_MINOR = 0
VERSION_BUILD = $$(autoincrement.bat)
VERSION = $${VERSION_MAJOR}.$${VERSION_MINOR}.$${VERSION_BUILD}
DEFINES += "VERSION_MAJOR=$$VERSION_MAJOR"\
"VERSION_MINOR=$$VERSION_MINOR"\
"VERSION_BUILD=$${VERSION_BUILD}"
main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString version = QString("%1.%2.%3").arg(VERSION_MAJOR)
.arg(VERSION_MINOR).arg(VERSION_BUILD);
QApplication::setApplicationVersion(version);
qDebug() << version;
NewsBulletin w;
w.show();
return a.exec();
}
【问题讨论】:
-
$$(autoincrement.bat)尝试访问环境。 var 只是,iirc ($${} 意味着一个普通的 var),所以你需要用其他方式运行 .bat,本质上(我会搜索“qmake pre-build”smth) -
@mlvljr 我想让 VERSION_BUILD 设置为数字虽然编辑:将版本放在头文件中与实际的 .pro 文件相比会有什么不同吗?
-
只有你事先知道它是什么,我猜......我可能在 .bat 没有被调用时错了,不过:stackoverflow.com/questions/1417061/…
-
@mlvljr 我解决了这个问题,不确定它是否是正确的方法。我将常量设置为局部整数,然后将其转换为 QString,或者任何我想要的。
-
@mlvljr,是的,我知道这与旧问题相似,但它们来自 5 个以上的主要版本,因此它们已经过时了。最后我不得不通过一种完全不同的方法运行批处理文件,因为我永远无法让它在 .pro 文件中运行。无论如何感谢您的帮助!